2010-09-24 8 views
6

Je le code suivant que je dois mettre à jour ...Rails 3 Combiner deux variables

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

Je veux apprendre comment mettre à jour que si au lieu de simplement montrer la FNAME, il montre fname + lname

donc pour un enregistrement comme James Bond, il montre james bond et le lie à l'utilisateur dans Rails.

grâce

Répondre

18

Vous pouvez vous joindre à la chaîne de droite dans le 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 %> 

Ou, vous pouvez déplacer cette logique laide dans une méthode d'aide, par exemple dans app/helpers/users_helper.rb:

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

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

Ou, (ce que je ferais), vous pouvez mettre une méthode full_name dans le modèle:

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

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

wow, je me sens comme je viens d'apprendre une tonne - merci! J'ai décidé d'aller avec la 3ème suggestion. Que pensez-vous de l'ajout d'une instruction IF, donc si l'une des variables est indéfinie dans la base de données, elle est inconnue ... donc il peut s'agir d'emplois inconnus ,,, ou steve unknown ... ou tout simplement inconnus. ça va pour le modèle? – AnApprentice

+2

Certains soutiendraient qu'une telle logique est trop «présentationnelle» pour le modèle, et devrait plutôt être une aide à la visualisation. En fin de compte, c'est à vous de décider où cela est le plus utile: j'ai mis beaucoup de méthodes de présentation «standard» dans le modèle. Présenter un nom comme "Steve Unknown" me semble étrange, et une présentation bizarre ("non-standard") comme celle-ci devrait probablement aller dans une méthode d'aide plutôt que dans le modèle. Mais c'est à toi de voir. –