2011-11-07 54 views
3

比方說,我有一堆項目,我想遍歷它們。我可能會有_item局部渲染這些。Rails:在組中重複部分

我可以使這些像這樣:

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

在這個例子中,假設部分是很簡單的東西,像這樣(在HAML):

.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> 

我並不總是知道提前我會有多少物品/我需要多少行。

你怎麼能創建一個部分,或包裝一個部分,所以它會像這樣的組渲染?

回答

7

你可以使用可枚舉的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 %> 
+0

美麗。這很好,謝謝。 – Andrew