将select2的多个选择插入导轨'的form_for

时间:2016-06-29 23:34:20

标签: ruby-on-rails form-for select2-rails

我正在使用select2-rails gem,并希望select2能够在artist_ids的多个选择字段中工作,就像在this all-js example中一样。这是我的erb文件现在的样子。添加js脚本没有产生任何效果,表单仍然以相同的方式加载。

<%= form_for @event, url: {action: "create"}, html: {class: "nifty_form"} do |f| %>
  <%= f.text_field :name %><br />
  <%= f.datetime_select :date %><br />
  <%= f.text_area :description, size: "60x12" %><br />
  <%= f.select(
    :venue_id,
    options_from_collection_for_select(Venue.all, "id", "name")
  ) %>
  <%= f.collection_select :artist_ids, Artist.all, :id, :name, {:selected => @event.artist_ids, include_blank: true}, {multiple: true} %>
  <br />
  <%= f.submit "Create" %><br />

    <% content_for :js do %>
    <script type="text/javascript">
    $(document).ready(function() {
        $('#event_artist_ids').select2();
    });
    </script>
    <% end %>
<% end %>

我遵循了按照文档中的说明添加select2的所有常用过程。在application.js中添加了//= require select2行,在{。{1}}中添加了*= require select2到application.scss。

更新:

在Prashant Ravi Darshan建议之后,看起来像select2已经开始工作,虽然有bug。现在它是选择艺术家的两个混乱的领域

enter image description here

2 个答案:

答案 0 :(得分:2)

请试试这个

<%= f.select(:artist_ids, Artist.all.collect {|a| [a.name, a.id]}, {}, id: "event_artist_ids", :multiple => true) %>

<script type="text/javascript">
    $( "#event_artist_ids" ).select2();
</script>

答案 1 :(得分:1)

似乎每个使用Stackoverflow的Select2的例子都是通过simple_form_for。有些人表达了这样的感觉:form_for不会起作用,因为select2不接受f.select ...我花了几个小时搞清楚如何让我的工作和我打开的所有主题,我不记得任何人form_for到达任何地方,当人们切换到simple_form_for他们成功了。