2010-09-24 27 views
6

birleştirin ben, bu fname + lnameRaylar 3 İki Değişkenler

Ben güncellemeniz gerekir aşağıdaki kodu ... Ben bunun yerine sadece Fname gösteren bu güncellemeyi öğrenmek isteyen

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

gösterir gelmiş

, James Bond gibi bir kayıt için, James Bond'u gösterir ve Rails'deki kullanıcıya bağlar.

sayesinde

Haklısınız ERB dizesini katılabilir

cevap

18

:

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

Veya, bir yardımcı yöntemiyle birlikte örneğin içine o çirkin mantığı taşıyabilirsiniz app/yardımcıları/users_helper.rb:

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

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

Veya (bu yapardım budur) modeldeki bir TAM_ISIM yöntemi koyabilirsiniz:

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

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

vay, ben hissediyorum Bir ton öğrendim gibi - teşekkürler! 3. öneriye gitmeye karar verdim. Bir IF deyimi ekleme hakkında ne düşünüyorsunuz, bu yüzden değişkenlerden biri DB'de tanımlanmamışsa bilinmez ... Yani bilinmeyen işler, bilinmeyenler ya da bilinmeyen ... ya da sadece bilinmeyen ... model için bu tamam mı? – AnApprentice

+2

Bazıları, bu gibi mantığın model için çok "sunum amaçlı" olduğunu ve bunun yerine bir yardımcı yardımcı olması gerektiğini iddia eder. Nihayetinde, en yararlı olduğu yere karar vermek size kalmıştır: Modele çok sayıda "standart" sunum yöntemi yerleştirdim. "Steve Unknown" gibi bir isim sunmak bana garip geliyor ve böyle garip ("standart olmayan") bir sunum muhtemelen modelden ziyade bir yardımcı yönteme gitmeli. Ama bu sana bağlı. –