我使用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
});
你有什么想法吗?
答案 0 :(得分:3)
问题是你的javascript只对已经渲染的项目初始化select2(这就是你没有第一个选择问题的原因)但是在你添加另一个之后,tasks.json
没有' t fire并且未在该项目上初始化。
要解决此问题,请在“cocoon:after-insert”之后添加一个回调,并在添加的行上触发select2事件。
所以你的javascript就像是
select2()
我没有测试过这段代码,但我希望你能得到这个想法。