2011-11-07 4 views
3

여러 개의 항목이 있고이를 반복하고 싶다고 가정 해 보겠습니다. 이 부분을 렌더링하려면 _item 부분이있을 수 있습니다.레일 : 그룹 단위로 부분 반복 만들기

그래서 같이 이러한 렌더링 수 :이 예를 들어

= 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

당신은 사용 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 %> 
+0

아름다운. 이것은 완벽하게 작동합니다. 감사합니다. – Andrew