2012-07-20 15 views
8

Üyelerim dizin sayfası sadece üyelerin listesidir, ancak her 3 üyenin içeren bir div (bu satır gibi davranacak) olarak sarılmasını istiyorum. Yani ziyade: ihtiyacımEbeveyn defterindeki her N öğesini ERB'de (Rails) nasıl sarılır?

<div class="member"></div> 
<div class="member"></div> 
<div class="member"></div> 
<div class="member"></div> 
<div class="member"></div> 

biçimlendirme olmak:

<div class="row"> 
    <div class="member"></div> 
    <div class="member"></div> 
    <div class="member"></div> 
</div> 
<div class="row"> 
    <div class="member"></div> 
    <div class="member"></div> 
</div> 

Bir çözüm var, ama ben memnun değilim. Daha önce ERB'de bunu yapmanın daha iyi bir yolunu gördüm, ama tekrar bulamıyorum.

Benim geçerli kod:

<div class="row"> 
    <% @members.each do |member| %> 
    <div class="member"><%=member.name%></div> 
    <%= cycle("", "", "</div><div class=\"row\">".html_safe) %> 
    <% end %> 
</div> 

cevap

15

nasıl bu konuda:

<% @members.each_slice(3) do |slice| %> 
    <div class="row"> 
    <% slice.each do |member| %> 
     <div class="member"> 
     ...your markup here 
     </div> 
    <% end %> 
    </div> 
<% end %> 
+2

Ayrıca (3 false) in_groups_of (3) each_slice yerini alabilir –

+0

Teşekkür efendim! Tam olarak aradığım şey bu. – tybro0103

+0

'in_groups_of' benim için çalışmadı. Bu cevap 'her_slice' zamanımı kurtardı. –

0

ı arıyordu yöntemini bulduğu modülü

<div class="row"> 
<% for(i=1, i<[email protected], i++ %> 
    <% if i%4 == 0 %> 
     </div> 
     <div class="row"> 
    <% end %> 
    <div class="member"><%[email protected][i-1]%></div> 
<% end %> 
</div> 
+0

Bu, döngü() yardımcıdan daha karmaşıktır. Daha basit bir şey arıyorum. – tybro0103

2

kullanmak için harika bir şans gibi geliyor . Bu @HargrimmTheBleak tarafından gönderildi each_slice() temelde aynıdır, ancak bir daha samimi bir adı vardır:

in_groups_of()

İlgili konular