2012-07-20 7 views
8

La mia pagina indice membri è semplicemente un elenco dei membri, ma mi piacerebbe ogni 3 membri di essere avvolti in un div contenente (che agirà come una fila). Quindi, piuttosto che:Come avvolgere ogni N elementi in parent div in ERB (Rails)?

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

ho bisogno del markup di essere:

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

io ho una soluzione, ma non sono felice con lui. In realtà ho già visto un modo migliore di farlo in ERB, ma non riesco a trovarlo di nuovo.

mio codice corrente:

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

risposta

15

ne dite di questo:

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

È possibile anche sostituire l'each_slice (3) con in_groups_of (3, false) –

+0

Grazie, signore! Questo è esattamente quello che sto cercando. – tybro0103

+0

'in_groups_of' non ha funzionato per me. questa risposta 'each_slice' mi ha salvato il tempo. –

0

suona come una grande opportunità di utilizzare un modulo

<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

Questo è ancora più complesso dell'assistente cycle(). Sto cercando qualcosa di più semplice. – tybro0103

2

ho trovato il metodo che cercavo . E 'fondamentalmente identica a each_slice() pubblicato da @HargrimmTheBleak, ma ha un nome più adatto:

in_groups_of()

Problemi correlati