Buenas a todos.
Tengo un pequeño lÃo y no encuentro la explicación (hoy andaré algo
espeso)
Esto funciona bien:
<% usuario.servicios.each { |servicio| %>
<%= servicio.nombre %>
<% } %>
Quiero hacer lo mismo pero en una linea (si se pudiera):
<%= usuario.servicios.each { |servicio| servicio.nombre } %>
<%= usuario.servicios.each { |servicio| "#{servicio.nombre} } %>
<% usuario.servicios.each { |servicio| print servicio.nombre } %>
Me devuelven un “#” en todos los casos. Supongo que será un Array.
¿PodrÃa
hacerlo en una lÃnea?
Saludos.
prueba de hacer <%= usuario.servicios.map{|servicio| servicio.nombre
}.join
%>
2009/3/19 Valentin P. [email protected]
De esa manera es como lo tengo al final:
<%= usuario.servicios.map{|servicio| servicio.nombre }.join(", ") %>
Ya era por curiosidad con respecto al each.
2009/3/19 Albert C. [email protected]
<% usuario.servicios.each { |servicio| puts “#{servicio.nombre}” } %>
2009/3/19 Valentin P. [email protected]
el puts no lo sacará por el log en lugar de la web?
2009/3/19 Emili Parreño [email protected]
El each devuelve el array original que has iterado, hagas lo que hagas
dentro. Por eso no te imprimia el resultado. Si a pesar de todo lo
quieres
hacer con each deberias hacer algo asi
<%= r=“”; usuario.servicios.each{|servicio| r += servicio.nombre }; r %>
o si quieres tirar por inject (devuelve el acumulado):
<%= usuario.servicios.inject(“”){|acc, servicio| acc + servicio.nombre
}; r
%>
Saludos.
2009/3/19 Valentin P. [email protected]
usa el método concat para sacar algo a la vista:
<% usuario.servicios.each { |servicio| concat(servicio.nombre) } %>
Saludos
Emilio, ese caso que pones lo intenté también, pero no me funcionó.
2009/3/19 Emili Parreño [email protected]
Me ha gustado esta idea, porque lo tengo que repetir en varios lugares.
Gracias.
2009/3/19 Guillermo [email protected]
2009/3/19 Valentin P. [email protected]
Buenas a todos.
Tengo un pequeño lÃo y no encuentro la explicación (hoy andaré algo espeso)
¿Has pensado en usar algún helper?
class MyHelper
def show_user_services(user)
user.servicios.map(&:nombre).to_sentence
end
end
Y en la vista:
<%= show_user_services(user) %>