【问题标题】:nested fields for generated twice生成两次的嵌套字段
【发布时间】:2017-12-15 18:13:55
【问题描述】:

下面的表格是为了同时编辑多条相关记录,同时根据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_oftag,只会呈现一个完整的版本?

如何正确解决这个问题?

【问题讨论】:

  • 但是我认为您处理问题的方法有误。如果您想要响应式网格中的项目,您不想手动添加行。相反,您只需将它们推入一个宽度为 12 的盒子中,让它根据显示尺寸流动。
  • 实际上,如果我删除in_groups_of 标签(基础网格),这已经发生了,它正在流动,但并不完美。

标签: ruby-on-rails nested-forms


【解决方案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) 并且没有像您期望的那样使用局部变量。这就是它重复所有记录六次的原因。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-24
    • 2011-07-29
    • 2016-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多