下拉列表不显示滑轨

时间:2019-03-20 09:40:11

标签: ruby-on-rails html-select

我有一个下拉列表,该列表应该显示数据库中的所有用户。显示下拉列表,但没有显示下拉列表的内容。

This is what I mean when I say dropdown content isn't showing

我从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' %>

有人看到我错过了什么吗?非常感谢您的帮助。

1 个答案:

答案 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' %>

这是一个内置的帮助程序,旨在执行您要重新创建的内容,因此可以完美地工作。

参数是从中构建选项的集合,用于调用值的方法,用于选项的文本的方法以及所选值的方法。

希望有帮助-让我知道您的生活状况或有任何疑问。