2012-07-20 11 views
8

La página de índice de mis miembros es simplemente una lista de miembros, pero me gustaría que cada 3 miembros estén envueltos en un div que lo contenga (que actuará como una fila). Así que en lugar de:Cómo envolver cada N elementos en div principal en ERB (Rails)?

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

necesito el marcado sea:

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

tengo una solución, pero no estoy feliz con él. De hecho, he visto una forma mejor de hacerlo en ERB antes, pero no puedo encontrarlo de nuevo.

Mi código actual:

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

Respuesta

15

¿Qué tal esto:

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

También puede reemplazar el each_slice (3) con in_groups_of (3, false) –

+0

Gracias, señor! Esto es exactamente lo que estoy buscando. – tybro0103

+0

'in_groups_of' no funcionó para mí. esta respuesta 'each_slice' me salvó el tiempo. –

0

suena como una gran oportunidad de utilizar un módulo

<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

Esto es incluso más complejo que el asistente de ciclo(). Estoy buscando algo más simple. – tybro0103

2

me encontré con el método que estaba buscando . Es básicamente idéntico al each_slice() Publicado por @HargrimmTheBleak, pero tiene un nombre más amigable:

in_groups_of()

Cuestiones relacionadas