我有一个下拉列表,该列表应该显示数据库中的所有用户。显示下拉列表,但没有显示下拉列表的内容。
我从MessagesHelper
中获取内容,即:
module MessagesHelper
def recipients_options(chosen_recipient = nil)
s = ''
User.all.each do |user|
s << "<option value='#{user.id}' #{'selected' if user == chosen_recipient}>#{user.username}</option>"
end
s.html_safe
end
end
然后我使用以下代码进行渲染:
<%= select_tag 'recipients', recipients_options(@chosen_recipient), class: 'form-control chosen-it' %>
有人看到我错过了什么吗?非常感谢您的帮助。
答案 0 :(得分:0)
您确实应该为此使用options_from_collection_for_select
。
为此,引用文档:
返回一串选项标签,这些选项标签是通过遍历集合并将调用结果分配给value_method作为选项值和text_method作为选项文本来编译的。
那样,您可以简单地使用:
<%= select_tag 'recipients', options_from_collection_for_select(User.all, :id, :username, @chosen_recipient.id), class: 'form-control chosen-it' %>
这是一个内置的帮助程序,旨在执行您要重新创建的内容,因此可以完美地工作。
参数是从中构建选项的集合,用于调用值的方法,用于选项的文本的方法以及所选值的方法。
希望有帮助-让我知道您的生活状况或有任何疑问。