Rails 辅助方法 return NilClass

Rails helper method return NilClass

我在 User#index 视图中有此代码:

<%= User.find_each do |user| %>
  <%= user.name %>
<% end %>

哪个returns用户名:

user1 user2 user3 ...

然后我将此代码移至 UserHelper:

module UserHelper
  def get_users
    User.find_each do |user|
      user.name
    end
  end
end

并从 User#index 视图调用它:

<%= get_users %>

问题是这没有返回任何用户。如果我使用 <%= get_users.class %>,它会输出 NilClass。为什么辅助方法不返回用户名?

您的辅助方法隐式地 return 调用 find_each 的结果,这与 return 用户名集合不同。

把它想象成 运行ning 5.times { |n| puts n }:那有什么价值?不是“0 1 2 3 4”,而是“5”,因为 times return 是它被调用的内容,而不是其块中的 运行。

顺便说一句,您的原始代码 return 完全相同——您依赖 find_each 块内的副作用,即将 user.name 附加到响应。

如果您想要 return 您想要 map/等的用户名集合。并获取每个用户的姓名。或者,IIRC,您可以进行查找和采摘,这样您就只能取回用户的姓名,而不是所有用户字段。

你也可以像下面这样使用,

  <%= User.all.map(&:name).join(' ') %>