如何从数据库中创建 Rails 中的多个项目 select 列表
How do I create a multiple item select list in Rails from database
这是我的代码 - 它工作正常,但我希望能够 select 多个组织,而这个 select 只允许我选择一个。
<%= f.collection_select :id,
Organisation.order(:Company_Name),
:id,
:Company_Name,
options = {include_blank: "Select an Organisation"},
html_options = {:onchange => 'broadcast_dropdown_change(document.getElementById("broadcast_country_id"), document.getElementById("broadcast_organisation_id"))'} %>
请帮助我解决这个问题,并提供有关如何改进此代码的任何建议。
谢谢。
我认为您只需要添加 html 选项 multiple: true
:) 希望这样可以轻松完成!
如果不是,您将需要确保允许的参数与传递的参数相匹配 - 可能是 JSON 编码的选项数组 - 并在数据库中适当地解析/保存它们。
我在评论中链接到您的 post 的副本中提供了更多示例。让我知道您的进展情况,如果需要,我会提供更多信息!
根据您的评论进行更新,这是一个示例:
<%= f.collection_select :id,
Organisation.order(:Company_Name),
:id,
:Company_Name,
{ include_blank: "Select an Organisation" },
onchange: 'broadcast_dropdown_change(document.getElementById("broadcast_country_id"), document.getElementById("broadcast_organisation_id")',
multiple: true %>
这里有几个注释:
- 此方法采用的最后两个参数用于
options
和 html_options
; include_blank: ...
是前者,最后两个参数是后者
您不需要将这些哈希分配给变量。第一个散列需要括号以将其与第二个散列区分开来,尽管最终散列是隐式的,因此不需要括号(尽管您可以使用它们,如果您觉得它更容易阅读,即)
{ onchange: 'broadcast_dropdown_change(document.getElementById("broadcast_country_id"), document.getElementById("broadcast_organisation_id")',
multiple: true }
- 快速查看一下您是如何命名变量的 - 花时间正确格式化它们是值得的 - 例如,
:Company_Name
应该始终是小蛇形 :company_name
希望对您有所帮助 - 再次提醒我,让我知道您的进展情况:)
这是我的代码 - 它工作正常,但我希望能够 select 多个组织,而这个 select 只允许我选择一个。
<%= f.collection_select :id,
Organisation.order(:Company_Name),
:id,
:Company_Name,
options = {include_blank: "Select an Organisation"},
html_options = {:onchange => 'broadcast_dropdown_change(document.getElementById("broadcast_country_id"), document.getElementById("broadcast_organisation_id"))'} %>
请帮助我解决这个问题,并提供有关如何改进此代码的任何建议。
谢谢。
我认为您只需要添加 html 选项 multiple: true
:) 希望这样可以轻松完成!
如果不是,您将需要确保允许的参数与传递的参数相匹配 - 可能是 JSON 编码的选项数组 - 并在数据库中适当地解析/保存它们。
我在评论中链接到您的 post 的副本中提供了更多示例。让我知道您的进展情况,如果需要,我会提供更多信息!
根据您的评论进行更新,这是一个示例:
<%= f.collection_select :id,
Organisation.order(:Company_Name),
:id,
:Company_Name,
{ include_blank: "Select an Organisation" },
onchange: 'broadcast_dropdown_change(document.getElementById("broadcast_country_id"), document.getElementById("broadcast_organisation_id")',
multiple: true %>
这里有几个注释:
- 此方法采用的最后两个参数用于
options
和html_options
;include_blank: ...
是前者,最后两个参数是后者 您不需要将这些哈希分配给变量。第一个散列需要括号以将其与第二个散列区分开来,尽管最终散列是隐式的,因此不需要括号(尽管您可以使用它们,如果您觉得它更容易阅读,即)
{ onchange: 'broadcast_dropdown_change(document.getElementById("broadcast_country_id"), document.getElementById("broadcast_organisation_id")', multiple: true }
- 快速查看一下您是如何命名变量的 - 花时间正确格式化它们是值得的 - 例如,
:Company_Name
应该始终是小蛇形:company_name
希望对您有所帮助 - 再次提醒我,让我知道您的进展情况:)