嵌套字段生成两次

时间:2017-12-15 18:13:55

标签: ruby-on-rails nested-forms

以下表单旨在同时编辑多个相关记录,同时根据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被渲染两次。

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

如何正确解决这个问题?

1 个答案:

答案 0 :(得分:1)

<%= 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的块中。