我有一个下拉列表,应该显示数据库中的所有用户。下拉列表正在显示,但下拉列表的内容不是。
我从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' %>
有人看到我错过的东西吗?我真的很感激帮助。
你真的应该使用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' %>
这是一个内置的帮助器,旨在完成您正在重新创建的内容,因此可以完美地工作。
参数是用于构建选项的集合,调用值的方法,选项文本的方法和选定的值。
希望有所帮助 - 让我知道你是如何得到的,或者如果你有任何问题。