我在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>
它看不到它。我哪里错了?我正在使用设计。
答案 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
即可