无法使用cocoon在表中追加字段

时间:2016-08-11 22:45:51

标签: ruby-on-rails cocoon-gem

我正在使用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"} %>

它应该可以正常工作,但新字段不会附加在表格的下方,而是显示在表格之外。

任何人都可以为它提出解决方案。感谢

1 个答案:

答案 0 :(得分:1)

根据茧文件: insertion-behaviour

默认行为

  

默认插入位置位于当前容器的后面。

如果您要添加到自定义位置,我们可以通过两个 数据属性实现此目的:

association-insertion-method在哪里添加

association-insertion-node在哪里添加与节点

相关的内容

以下是示例:

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

注意:

如果要将模板添加到特定位置:

  • 不是链接的直接父母或兄弟
  • 链接多次出现 - 例如,在深层嵌套的表单中

您需要将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')
      });
});