【问题标题】:Rails 3 Combine Two VariablesRails 3结合了两个变量
【发布时间】:2025-12-06 06:10:01
【问题描述】:

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

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

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

所以对于像詹姆斯邦德这样的记录,它显示詹姆斯邦德并将其链接到 Rails 中的用户。

谢谢

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 哇,我觉得我刚刚学到了很多东西——谢谢!我决定接受第三个建议。您对向其中添加 IF 语句有何看法,因此如果数据库中未定义任何一个变量,则表示未知......所以它可能是未知的工作,,或史蒂夫未知......或只是未知......是模型可以吗?
    • 有些人会争辩说,这样的逻辑对于模型来说太“展示”了,应该改为视图助手。最终由您决定它在哪里最有用:我在模型中放置了许多“标准”表示方法。呈现像“Steve Unknown”这样的名字对我来说似乎很奇怪,而像这样的奇怪(“非标准”)呈现可能应该使用辅助方法而不是模型。但是,这取决于你。