Rails 3组合两个变量

时间:2010-09-24 05:20:43

标签: ruby-on-rails ruby-on-rails-3

我有以下代码需要更新...

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

我想学习如何更新它,而不是只显示fname,它显示fname + lname

所以对于像James Bond这样的唱片,它会显示james bond并将其链接到Rails中的用户。

感谢

1 个答案:

答案 0 :(得分:18)

您可以在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 %>

或者,您可以将丑陋的逻辑移动到辅助方法中,例如在 app / helpers / users_helper.rb

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

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

或者,(这就是我要做的)您可以在模型中添加 full_name 方法:

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

<%= link_to user.full_name, user %>