如何在 Rails 视图中使用 Bootstrap 多选?
How to use Bootstrap Multiselect in Rails views?
我正在尝试在我的 rails 应用程序中实现 bootstrap 多 select 字段。
利用此处找到的 bootstrap-multiselect_rails gem (https://github.com/TrevorS/bootstrap-multiselect_rails)
已成功安装和配置,但在我的表单中无法 select 多个值。它允许我 select 只有一个值。
现在我的代码如下所示:
<%= f.collection_select :role_pm, User.where(:user_role => 'Project Manager'), :name, :name, {}, {:multiple => 'true'}, {class: "role_pm"} %>
我哪里错了?
.您需要使用 js.
初始化 Multiselect
这是我的工作代码:-
###HTML FILE
##my controller has @event_types to autopopulate the values as well for edit action
<label for="events" class="control-label form-group col-md-12">Event Type: </label>
<div class="form_group col-md-12">
<div class="btn-group">
<%= select_tag("event_types", options_for_select(@event_types.pluck(:name),:multiple=>true,:required=>true) %>
</div>
</div>
###js FILE-initialise using id/class for multiselect
$('#event_types').multiselect({
enableFiltering: true,
filterBehavior: 'text',
enableCaseInsensitiveFiltering: true,
nonSelectedText: 'Select the type of events'
});
您可以在 select 标签中使用 selected
属性到 select 编辑期间的那些值 action.Just 从控制器传递它..示例
:selected => @event_types.new_record? ? nil : @event_types.pluck(:name)
重写您的查询...
<%= select_tag("event_types", options_for_select(@event_types.pluck(:name),:multiple=>true,:required=>true) %>
更改为:在 select 下拉列表中显示名称
<%= select_tag("role_pm", options_for_select(User.where(:user_role => 'Project Manager').pluck(:name).uniq,:multiple=>true,:required=>true) %>
终于成功了。我已经更新了这个答案中的代码行,这让我在过去两天左右很痛苦
<%= f.collection_select :role_pm, User.where(:user_role => 'Project Manager'), :name, :name, {}, :multiple => 'true', :class => 'role_pm' %>
看起来我已经将 multiple 和 class 属性作为单独的数组传递,这在一开始确实不需要。
我正在尝试在我的 rails 应用程序中实现 bootstrap 多 select 字段。
利用此处找到的 bootstrap-multiselect_rails gem (https://github.com/TrevorS/bootstrap-multiselect_rails)
已成功安装和配置,但在我的表单中无法 select 多个值。它允许我 select 只有一个值。
现在我的代码如下所示:
<%= f.collection_select :role_pm, User.where(:user_role => 'Project Manager'), :name, :name, {}, {:multiple => 'true'}, {class: "role_pm"} %>
我哪里错了?
.您需要使用 js.
初始化 Multiselect这是我的工作代码:-
###HTML FILE
##my controller has @event_types to autopopulate the values as well for edit action
<label for="events" class="control-label form-group col-md-12">Event Type: </label>
<div class="form_group col-md-12">
<div class="btn-group">
<%= select_tag("event_types", options_for_select(@event_types.pluck(:name),:multiple=>true,:required=>true) %>
</div>
</div>
###js FILE-initialise using id/class for multiselect
$('#event_types').multiselect({
enableFiltering: true,
filterBehavior: 'text',
enableCaseInsensitiveFiltering: true,
nonSelectedText: 'Select the type of events'
});
您可以在 select 标签中使用 selected
属性到 select 编辑期间的那些值 action.Just 从控制器传递它..示例
:selected => @event_types.new_record? ? nil : @event_types.pluck(:name)
重写您的查询...
<%= select_tag("event_types", options_for_select(@event_types.pluck(:name),:multiple=>true,:required=>true) %>
更改为:在 select 下拉列表中显示名称
<%= select_tag("role_pm", options_for_select(User.where(:user_role => 'Project Manager').pluck(:name).uniq,:multiple=>true,:required=>true) %>
终于成功了。我已经更新了这个答案中的代码行,这让我在过去两天左右很痛苦
<%= f.collection_select :role_pm, User.where(:user_role => 'Project Manager'), :name, :name, {}, :multiple => 'true', :class => 'role_pm' %>
看起来我已经将 multiple 和 class 属性作为单独的数组传递,这在一开始确实不需要。