Рельсы field_for путаница - PullRequest
1 голос
/ 02 июля 2011

Обратите внимание, что я довольно плохо знаком с рельсами, поэтому, пожалуйста, не ненавидите меня слишком сильно.

Я хочу иметь 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 голосов
/ 02 июля 2011

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 %>
0 голосов
/ 02 июля 2011

Вы можете использовать #each_slice из Enumerable, чтобы разделить их на части при повторении.Что-то вроде:

<%= 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 %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...