Rails fields_for混乱

时间:2011-07-02 01:17:32

标签: ruby-on-rails

请注意,我对rails非常陌生,所以请不要太讨厌我。

我希望对象有2个不同的表行条目。据我所知,代码看起来像这样。

<%= form_for(@object) do |f| %>
<table>
  <tr>
    <th> Col 1 </th>
    <th> Col 2 </th>
    <th> Col 3 </th>
    <th> Col 4 </th>
    <th> Col 5 </th>
    <th> Col 6 </th>
    <th> Col 7 </th>
  </tr>
  <tr>
    <!-- entries 1-7 here --!>
  </tr>
  <tr>
    <!-- entries 8-14 here --!>
  </tr>
</table>
<% end %>

但据我所知,使用像<% fields_for(@object.entries) do |entry| %>之类的东西迫使我立即通过所有这些,当我真的只想做上半场而不是下半场。我知道每个对象总共会有14个条目(每天1个,共2周),我希望看到它们分为2行(每周1行)。任何想法如何去做?

2 个答案:

答案 0 :(得分:0)

您可以使用Ienumerable中的#each_slice来迭代它们。类似的东西:

<%= form_for(@object) do |f| %>
<table>
  <tr>
    <th> Col 1 </th>
    <th> Col 2 </th>
    <th> Col 3 </th>
    <th> Col 4 </th>
    <th> Col 5 </th>
    <th> Col 6 </th>
    <th> Col 7 </th>
  </tr>
  <% @object.entries.each_slice(7) do |arr| %>
    <% arr.each do |obj| %>
      <tr>
        <!-- entries n-n+7 here -->
      </tr>
    <% end %>
  <% end %>
</table>
<% end %>

答案 1 :(得分:0)

fields_for接受数组,因此您应该只能传递所需的条目:

<% fields_for(@object.entries[0,7]) do |entry| %>
  ...
<% end %>

甚至将它与上面答案中的each_slice(或in_groups_of)结合起来:

<% @object.entries.each_slice(7) do |entries| %>
  <% fields_for(entries) do |entry| %>
    ...
  <% end %>
<% end %>