Как обойти таблицы, которые должны быть отсортированы в две группы по четыре при использовании will_paginate? - PullRequest
0 голосов
/ 17 февраля 2012

Я использую will_paginate для разбивки своих элементов на восемь одновременно.

Я хочу организовать их в таблицу из двух строк и четырех столбцов, сохраняя при этом нумерацию страниц.Как я могу это сделать?

Пока у меня есть:

<%= will_paginate @items, :page_links => false %>
<table id="item_table">
    <tr>
    <% for item in @items %>
        <td>Test</td>
    <% end %>
    </tr>
</table>

Но мне нужно как-то изменить это так, чтобы вместо 1009 * я мог быть временным массивом из каждых четырех элементовиз восьмиВот идеальный вывод:

<-- 1 2 ... 5 6 -->
Test Test Test Test
Test Test Test Test

Где очевидно, что верхние ссылки ведут к следующим восьми пунктам.Есть идеи?

Ответы [ 3 ]

2 голосов
/ 17 февраля 2012

Обновление
each_slice само является перечислимым, поэтому нет необходимости создавать массив перед вызовом каждого из них, я сократил код на строку <% @item.each_slice (4) do | item_new |%> <% item_new.each do | item |%> <% = item.name%> <% end%> <% end%>

Код - это всего лишь фрагмент из одного из моих приложений, реализующийпочти то же самое, что вы пытаетесь достичь, я надеюсь, что это поможет, не забудьте включить will_paginate и заполнить таблицу.Это просто логика, которая вам потребуется.

1 голос
/ 17 февраля 2012

Это не имеет ничего общего с нумерацией страниц. Вопрос связан с мнениями. Вы можете использовать CSS для управления своими взглядами!

Тем не менее, если вы предпочитаете генерировать сетку 2x4 из кода, попробуйте следующее:

<table id="item_table">
  <% @items.each_with_index |v,i| %>
      <%if i%4 == 0 %>
        <tr>
      <%end%> 
      <td>Test</td>
      <%if i%4 == 0 and i > 0%>
     </tr>
    <%end%> 
  <% end %>
</table> 

Вы можете легко изменить его, чтобы удалить повтор кода.

0 голосов
/ 17 февраля 2012

вид:

<%= will_paginate @items %>
<table id="item_table">
 <tr>
  <% for item in @items[0..3] %>
   <td><%= item.name %></td>
  <% end %>
 </tr>
 <tr>
  <% for item in @items[4..7] %>
   <td><%= item.name %></td>
  <% end %>
 </tr>
</table>

Контроллер: * +1004 *

@items = Item.paginate :per_page => 8, :page => params[:page]

Это немного грязно, возможно, есть лучший способ разбить строки, но это быстро. Кроме того, для таких вещей я обычно использую div, поэтому вы можете просто позволить им свободно оборачиваться.

...