2010-09-24 21 views
6

he el siguiente código, que es necesario que actualice ...Rails 3 Combinar dos variables

<% @users.each do |user| %> 
    <tr> 
    <td><%= link_to user.fname, user %></td> 
    </tr> 
<% end %> 

Quiero aprender cómo actualizar de modo que en lugar de simplemente mostrar la fnombre, muestra fnombre + lname

por lo que para un registro como James Bond, muestra James Bond y lo vincula al usuario en Rails.

gracias

Respuesta

18

Usted puede unirse a la cadena justo en el ERB:

<%= link_to user.fname + " " + user.lname, user %> 
<!-- or, slightly better: avoids problems with nil values --> 
<%= link_to "#{user.fname} #{user.lname}", user %> 
<!-- or, even better --> 
<%= link_to [user.fname, user.lname].join(" "), user %> 

O bien, puede pasar que la lógica fea en un método de ayuda, por ejemplo, en app/helpers/users_helper.rb:

module UsersHelper 
    def full_name(user) 
    [user.fname, user.lname].join(" ") 
    end 
end 

<%= link_to full_name(user), user %> 

O, (esto es lo que yo haría) se puede poner un métodoFULL_NAME en el modelo:

class User < ActiveRecord::Base 
    def full_name 
    [fname, lname].join(" ") 
    end 
end 

<%= link_to user.full_name, user %> 
+0

wow, me siento como si hubiera aprendido muchísimo, ¡gracias! Decidí ir con la tercera sugerencia. ¿Qué piensas acerca de agregarle una instrucción IF, por lo que si alguna de las variables está indefinida en la base de datos se dice que es desconocida ... por lo que podrían ser trabajos desconocidos ,, o desconocidos ... o simplemente desconocidos. eso está bien para la modelo? – AnApprentice

+2

Algunos argumentarían que una lógica como esta es demasiado "presentacional" para el modelo, y debería ser un asistente de visualización en su lugar. En última instancia, depende de usted decidir dónde es más útil: pongo muchos métodos de presentación "estándar" en el modelo. Presentar un nombre como "Steve Unknown" me parece extraño, y una presentación extraña ("no estándar") como esa probablemente debería ir en un método de ayuda en lugar de en el modelo. Pero depende de ti. –