Rails用select2嵌套表单

时间:2016-06-12 07:39:25

标签: javascript ruby-on-rails jquery-select2

我使用cocoon gem作为嵌套表单,并使用select2作为自定义选择。

第一个集合选择已按预期工作。当我添加另一个选择项时,即使选择项具有相同的类,它也没有工作。我尝试了this解决方案。但它并没有解决我的问题。因为我已经将其称为部分嵌套项目。

_form.html

 <%= simple_form_for(@course) do |f| %>
   <%= f.simple_fields_for :course_teachers do |course_teacher| %>
     <%= render "course_teacher_fields", :f => course_teacher %>
   <% end %>
   <div class="links">
     <%= link_to_add_association 'Add Teacher', f, :course_teachers, class:"btn btn-info" %>
   </div>
 <%end%>

_course_teacher_fields.html

<div class="nested-fields">
  <%= f.association :teacher, collection: Teacher.all, label_method: :full_name_with_title, input_html: {class: "teacher"} %><br/>
</div>

app.js

$(".teacher").select2({
  placeholder: "Select Teacher",
  allowClear: true
});

你有什么想法吗?

1 个答案:

答案 0 :(得分:3)

问题是你的javascript只对已经渲染的项目初始化select2(这就是你没有第一个选择问题的原因)但是在你添加另一个之后,tasks.json没有' t fire并且未在该项目上初始化。

要解决此问题,请在“cocoon:after-insert”之后添加一个回调,并在添加的行上触发select2事件。

所以你的javascript就像是

select2()

我没有测试过这段代码,但我希望你能得到这个想法。