Rails: сделать повторяющийся частичный в группах - PullRequest
3 голосов
/ 07 ноября 2011

Допустим, у меня есть куча предметов, и я хочу перебрать их.Я мог бы иметь _item частичное для их рендеринга.

Я мог бы сделать это следующим образом:

= render :partial=>'item', :collection => @items, :as => :item

Для этого примера, допустим, что частичное является чем-то очень простым, например, так (в хамле):

.item= item.name

Однако я бы хотел, чтобы эти элементы были сгруппированы по строкам, поэтому разметка будет выглядеть примерно так:

<div class="item_row">
  <div class="item">Item Name</div>
  <div class="item">Item Name</div>
  <div class="item">Item Name</div>
  <div class="item">Item Name</div>
  <div class="item">Item Name</div>
</div>
<div class="item_row">
  <div class="item">Item Name</div>
  <div class="item">Item Name</div>
  <div class="item">Item Name</div>
  <div class="item">Item Name</div>
  <div class="item">Item Name</div>
</div>
<div class="item_row">
  <div class="item">Item Name</div>
  <div class="item">Item Name</div>
  <div class="item">Item Name</div>
  <div class="item">Item Name</div>
  <div class="item">Item Name</div>
</div>

Я не всегдазаранее знать, сколько элементов будет / сколько строк мне нужно.

Как можно создать частичное или обернуть частичное, чтобы оно отображалось в таких группах?

1 Ответ

8 голосов
/ 07 ноября 2011

Вы можете использовать Enumerable each_slice, чтобы сгруппировать эти 5 за раз и отобразить их в ряд:

<% @items.each_slice(5) do |items_for_row| %>
  <div class="item_row">
    <%= render :partial => "item", :collection => items_for_row, :as => :item %>
  </div>
<% end %>
...