2010-09-24 31 views
6

Tôi đã đoạn mã sau mà tôi cần phải cập nhật ...Rails 3 Kết hợp hai biến

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

Tôi muốn học làm thế nào để cập nhật mà nên thay vì chỉ hiển thị các fname, nó cho thấy fname lname +

vì vậy đối với một bản ghi như James Bond, nó hiển thị liên kết james và liên kết nó với người dùng trong Rails.

nhờ

Trả lời

18

Bạn có thể tham gia chuỗi ngay trong 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 %> 

Hoặc, bạn có thể di chuyển mà luận xấu xí thành một phương pháp helper, ví dụ trong app/giúp đỡ/users_helper.rb:

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

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

Hoặc, (đây là những gì tôi sẽ làm gì), bạn có thể đặt một FULL_NAME phương pháp trong mô hình:

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

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

wow, tôi cảm thấy như tôi vừa học được một tấn - cảm ơn bạn! Tôi quyết định đi với đề nghị thứ 3. Bạn nghĩ gì về việc thêm một câu lệnh IF vào nó, vì vậy nếu một trong hai biến không được xác định trong DB được nói là không biết ... vì vậy nó có thể là các công việc không rõ ,,, hoặc steve không rõ ... hoặc chỉ không rõ .. ok cho mô hình? – AnApprentice

+2

Một số người cho rằng logic như thế này là quá "trình bày" cho mô hình, và nên là một người trợ giúp xem. Cuối cùng, tùy thuộc vào bạn để quyết định xem nó hữu ích nhất ở đâu: tôi đặt rất nhiều phương pháp trình bày "tiêu chuẩn" trong mô hình. Trình bày một cái tên như "Steve Unknown" có vẻ kỳ quặc đối với tôi, và một bài trình bày kỳ quặc ("không chuẩn") như vậy có lẽ nên đi theo một phương thức trợ giúp hơn là mô hình. Nhưng nó là tùy thuộc vào bạn. –