Let's say I have a bunch of items and I want to iterate through them. I might have an _item partial to render these.
I could render these like so:
= render :partial=>'item', :collection => @items, :as => :item
For this example, let's say the partial is something really simple, like so (in haml):
.item= item.name
However, I'd like these items to be grouped in rows, so the markup ends up being like so:
<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>
I don't always know ahead of time how many items there will be / how many rows I need.
How could you create a partial, or wrap a partial, so it would render in groups like this?
You could use Enumerable's each_slice to group these 5 at a time and display them in a row:
<% @items.each_slice(5) do |items_for_row| %>
<div class="item_row">
<%= render :partial => "item", :collection => items_for_row, :as => :item %>
</div>
<% end %>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With