Imprimir con metodo each


#1

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.


#2

prueba de hacer <%= usuario.servicios.map{|servicio| servicio.nombre
}.join
%>

2009/3/19 Valentin P. removed_email_address@domain.invalid


#3

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. removed_email_address@domain.invalid


#4

<% usuario.servicios.each { |servicio| puts “#{servicio.nombre}” } %>

2009/3/19 Valentin P. removed_email_address@domain.invalid


#5

el puts no lo sacará por el log en lugar de la web?

2009/3/19 Emili Parreño removed_email_address@domain.invalid


#6

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. removed_email_address@domain.invalid


#7

usa el método concat para sacar algo a la vista:

<% usuario.servicios.each { |servicio| concat(servicio.nombre) } %>

Saludos


#8

Emilio, ese caso que pones lo intenté también, pero no me funcionó.

2009/3/19 Emili Parreño removed_email_address@domain.invalid


#9

Me ha gustado esta idea, porque lo tengo que repetir en varios lugares.

Gracias.

2009/3/19 Guillermo removed_email_address@domain.invalid


#10

2009/3/19 Valentin P. removed_email_address@domain.invalid

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) %>