gpt4 book ai didi

jquery - Rails 中的多选

转载 作者:行者123 更新时间:2023-12-01 01:15:06 25 4
gpt4 key购买 nike

我正在尝试使用 bootstrap multiselect在我的 Rails 应用程序中。

在我使用它的 View 中,我使用它初始化插件

<script type="text/javascript">
$(document).ready(function() {
$('.multiselect').multiselect();
});
</script>

使用演示 html 似乎可以正常工作:

<select class="multiselect" multiple="multiple">
<option value="cheese">Cheese</option>
<option value="tomatoes">Tomatoes</option>
<option value="mozarella">Mozzarella</option>
<option value="mushrooms">Mushrooms</option>
<option value="pepperoni">Pepperoni</option>
<option value="onions">Onions</option>
</select>

这很棒,但我无法让它与我的 Rails 选择代码一起使用。这是我的尝试:

<%= f.fields_for :sizes do |size_fields| %>
<%= size_fields.label :scale_id, simple_pluralize(@miniset.scales.count, 'Scale') %>
<%= hidden_field "Set Scale", @miniset.sizes %>
<div class = "form-inline"><%= size_fields.select :scale_id, options_from_collection_for_select(Scale.all, :id, :name, @miniset.scales.map(&:id)), {include_blank: '', :class => 'multiselect', :multiple => true} %>
<% end %></div>

我认为问题是 :class => 'multiselect', :multiple => true不以 <select class="multiselect" multiple="multiple"> 相同的方式调用 JQuery确实如此,但我想一定有办法让它发挥作用。非常感谢任何帮助。

编辑:我应该补充一点,我的选择已显示,它只是没有显示为预期的智能多选之一,如 here 所示。 .

编辑2:浏览器显示的该选择的代码是:

<label for="miniset_sizes_attributes_0_scale_id">Scales</label>
<input id="Set_Scale_#&lt;ActiveRecord::Associations::CollectionProxy::ActiveRecord_Associations_CollectionProxy_Size:0x007fcf644c0c08&gt;" name="Set Scale[#&lt;ActiveRecord::Associations::CollectionProxy::ActiveRecord_Associations_CollectionProxy_Size:0x007fcf644c0c08&gt;]" type="hidden" />
<div class = "form-inline"><select id="miniset_sizes_attributes_0_scale_id" name="miniset[sizes_attributes][0][scale_id]"><option value=""></option>
<option value="1">28mm</option>
<option value="2">54mm</option>
<option value="3">6mm</option>
<option value="4">15mm</option>
<option value="5">1/76</option></select>
</div>

那里没有多选或多选的迹象。嗯。

最佳答案

您选择的字段选项是这样生成的:

options_from_collection_for_select(Scale.all, :id, :name, {:selected => @miniset.scales.map(&:id)})

所选值(在您的情况下为 id)不应作为散列传递,而是作为数组传递:

options_from_collection_for_select(Scale.all, :id, :name, @miniset.scales.map(&:id))

此外,您还传递了 classmultiple 属性作为选择选项的一部分 - 但这些选项不受支持,并且缺少的类会导致jquery 选择器找不到您的选择字段。您想要的是将它们作为标准 HTML 选项 传递,这需要第二个哈希。这是您应该使用的完整的select构建器:

size_fields.select :scale_id, 
options_from_collection_for_select(Scale.all, :id, :name, @miniset.scales.map(&:id)),
{include_blank: ''},
{class: 'multiselect', multiple: true}

关于jquery - Rails 中的多选,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21410056/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com