下拉列表未显示rails

问题描述 投票:0回答:1

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

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

有人看到我错过的东西吗?我真的很感激帮助。

ruby-on-rails html-select
1个回答
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' %>

这是一个内置的帮助器,旨在完成您正在重新创建的内容,因此可以完美地工作。

参数是用于构建选项的集合,调用值的方法,选项文本的方法和选定的值。

希望有所帮助 - 让我知道你是如何得到的,或者如果你有任何问题。

© www.soinside.com 2019 - 2024. All rights reserved.