无法使用 cocoon 附加 table 中的字段

Unable to append fields in table with cocoon

我正在使用 cocoon 添加嵌套属性。我认为有以下代码:

<table>
  <thead>
  <tr>
    <th>Title</th>
    <th>Action</th>
  </tr>
  </thead>
  <tbody id="emergency_personnels">
    <%= f.fields_for :emergency_personnels do |emergency_personnel| %>
      <%= render 'emergency_personnel_fields', f: emergency_personnel %>
    <% end %>
  </tbody>
</table>
<%= link_to_add_association 'Add emergency personnel', f, :emergency_personnels, data: {"association-insertion-node" => "tbody#emergency_personnels", "association-insertion-method" => "append"} %>

它应该工作正常,但新字段没有附加在 table 的 tbody 下,而是出现在 table.

之外

谁能提出解决方案。谢谢

根据 Cocoon 文档: insertion-behaviour

默认行为

The default insertion location is at the back of the current container.

如果要添加到自定义位置,那么我们可以通过两个数据属性来实现:

association-insertion-method添加到哪里

association-insertion-node 相对节点添加到哪里

示例如下:

$(document).ready(function() {
    $("#owner a.add_fields").
      data("association-insertion-method", 'append').
      data("association-insertion-node", '#parent_table');
});

注意:

如果您想将模板添加到特定位置,即:

  • 不是 parent 或 link
  • 的直系兄弟姐妹
  • link 出现多次 - 例如,在一个深层嵌套的表单中

您需要将 association-insertion-node 指定为函数。例如

$(document).ready(function() {
    $(".add_sub_task a").
      data("association-insertion-method", 'append').
      data("association-insertion-node", function(link){
        return link.closest('.row').next('.row').find('.sub_tasks_form')
      });
});