我如何访问我在Rails中编写的帮助程序?

时间:2011-09-15 18:24:11

标签: ruby-on-rails

我在user_helper.rb

中为我的用户模型编写了一个帮助器
module UserHelper
  def get_array_of_names_and_user_ids
    User.all(&:first_name) + User.all.map(&:user_id)
  end
end

不幸的是,当我输入

 <div class="field">
        <%= f.label :assignee, "Assigned to" %>
        <%= select(:task, :assignee_id, User.get_array_of_names_and_user_ids )%>
  </div>

它看不到它。我哪里错了?我正在使用设计。

4 个答案:

答案 0 :(得分:4)

你很亲密。帮助程序不会成为类似的类方法 - 它可以作为视图中的方法访问。只需致电get_array_of_names_and_user_ids

答案 1 :(得分:2)

助手不是针对模型的观点。 对于模型,您应该在用户模型

中定义类方法
class User
  def self.get_array_of_names_and_user_ids
    User.all(&:first_name) + User.all.map(&:user_id)
  end
end

答案 2 :(得分:1)

您不需要手动编写此帮助程序代码,因为Rails为此提供了一个名为collection_select的帮助程序。

在您的视图中,只需添加以下内容:

<%= collection_select(:task, :assignee_id, User.all, :id, :first_name, 
   :prompt => true) %>

注意:

我假设你的数据库中有一小组用户(&lt; 30)。否则,您必须使用其他控件来选择用户。

答案 3 :(得分:0)

Helper是可以在视图中调用的方法,而不是在模型上调用的方法 只需调用get_array_of_names_and_user_ids

即可