生成两次的嵌套字段

nested fields for generated twice

下面的表格是为了同时编辑多条相关记录,同时根据in_groups_of.

格式化记录数
<%= form_for(@event) do |f| %>
  <div class='row'>
    <% @event.eventdistances.in_groups_of(6, false) do |eventdistances| %>
      <%= f.fields_for :eventdistances do |eventdistance| %>
        <div class='small-2 medium-2 large-2 columns'>
          <%= eventdistance.check_box :active %> <%= eventdistance.object.building.nome %><br /><%= number_with_precision(eventdistance.object.distance, precision: 1) %> km
        </div>
      <% end %>
    </div>
  <% end %>

但是,生成的 html beng 在一组 6 个之后没有关闭行标签,整个 shebang 被渲染了两次。

do in_groups_offields_for 以某种方式发生冲突,因为如果我删除 in_groups_of 标签,只会呈现一个完整的版本?

如何妥善解决?

<%= form_for(@event) do |f| %>
  <% @event.eventdistances.in_groups_of(6, false) do |eventdistances| %>
    <div class='row'>
      <%= f.fields_for :eventdistances, eventdistances do |eventdistance| %>
        <div class='small-2 medium-2 large-2 columns'>
          <%= eventdistance.check_box :active %> <%= eventdistance.object.building.nome %><br /><%= number_with_precision(eventdistance.object.distance, precision: 1) %> km
       </div>
      <% end %>
    </div>
  <% end %>
<% end %>

第一个问题是当您调用 f.fields_for :eventdistances do |eventdistance| 时调用 f.object.eventdistances (f.object = @event) 并且没有像您期望的那样使用局部变量。这就是它重复所有记录六次的原因。

您要做的是将集合作为第二个参数传递。此外,如果您想将每个组放入 <div class='row'> 中,您希望将标签放在传递给 .in_groups_of.

的块内