【问题标题】:Multiple attribute in collection_select in RailsRails 中的 collection_select 中的多个属性
【发布时间】:2018-08-11 23:41:45
【问题描述】:

我试图允许从 Rails 表单中的集合中选择多个值。该字段正在工作,但不允许进行多项选择(一旦选择了替代选项,则先前选择的选项将被取消选择)。我正在使用 Bootstrap CDN,我认为这不会导致问题,但我可能错了?

你能看出这段代码有什么问题吗?

  <div class="field form-group row">
      <%= f.label :industry_ids, class:"col-sm-3"%>
      <%= f.collection_select(:industry_ids, Industry.all, :id, :name, {:multiple => true}, size: Industry.all.length) %>
    </div>

感谢您的帮助。

【问题讨论】:

  • 下面的答案有用吗?如果没有,你更改它时发生了什么?
  • 我更改了代码以包含一个空散列来代替多个选项,并将这个散列移回一个位置。这对结果没有任何影响。这就是你的建议吗?
  • &lt;%= f.collection_select(:industry_ids, Industry.all, :id, :name, {}, :multiple =&gt; true, size: Industry.all.length) %&gt;

标签: ruby-on-rails collection-select


【解决方案1】:

我相信您的问题是您将 {:multiple =&gt; true} 放入了错误的选项哈希中。 collection_select 的方法签名如下所示:

collection_select(object, method, collection, value_method, text_method, options = {}, html_options = {})

multiple 是 select 标签本身的一个 html 属性(这里是一个 doc),所以你想将它传递给 html_options,而不是 options。您的代码如下所示:

f.collection_select(:industry_ids, Industry.all, :id, :name, {:multiple => true}, size: Industry.all.length)

其中Industry.allcollection:idvalue_method:nametext_method,这意味着{ :multiple =&gt; true } 被传递给options,而不是html_options。将它移动到第二个哈希,你应该没问题。

【讨论】:

    猜你喜欢
    • 2016-06-15
    • 2015-02-12
    • 2015-12-18
    • 2021-10-04
    • 2015-08-12
    • 1970-01-01
    • 2016-03-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多