Rails[Cocoon]:尽管删除了字段,添加 link 仍然存在?

Rails[Cocoon]: add link persists despite removed field?

我正在 Rails 4 使用最新的 Cocoon gem。一切正常;我唯一的问题是,当我删除嵌套字段时,添加 link 仍然存在。正如在 README 中,用于添加的 link 在 _form 中,而用于删除的 link 在 _[model]_fields 中。我正在使用 SimpleForm:

_form.html.erb

<%= simple_form_for(@group) do |f| %>
  <%= f.input :name, :label_html => { class: "col-md-2" }, :input_html => { class: "col-md-10" } %>
  <div id="group_names">
    <%= f.simple_fields_for :group_names do |subgroup| %>
      <%= render 'group_name_fields', :f => subgroup %>
      <div class="links">
        <%= link_to_add_association 'add', f, :group_names %>
      </div>
    <% end %>
  </div>
<% end %>

_group_names_fields.html.erb

<div class="nested-fields">
  <%= f.input :subgroup, :label_html => { class: "col-md-2" }, :input_html => { class: "col-md-10" }, :required => false %>
  <%= link_to_remove_association "remove", f %>
</div>

我错过了什么?注意:我没有错过提交按钮,提交和删除一样有效。只是添加 link 不会消失。对于这么简单的事情,我确信我只是做错了什么,但我似乎无法发现它。否则,我正在考虑将 add link 包装在 if 语句中,但我不确定该条件可能是什么。

谢谢!

Answer: <%= link_to_add_association 'add', f, :group_names %> 应该在 <%= f.simple_fields_for :group_names do |subgroup| %> 循环之外。还解决了我当前的新问题,所以奖金!

这是在 haml 中的 cocoon README 中列出的代码:

= simple_form_for @project do |f|
  = f.input :name
  = f.input :description
  %h3 Tasks
  #tasks
    = f.simple_fields_for :tasks do |task|
      = render 'task_fields', :f => task
    .links
      = link_to_add_association 'add task', f, :tasks
  = f.submit

我不知道 haml,所以我不知道这是否只是 haml 的事情,但 .links 毕竟实际上不在 f.simple_fields_for 循环中。