2012-07-20 2 views
8

Meine Mitglieder Indexseite ist einfach eine Liste von Mitgliedern, aber ich möchte alle 3 Mitglieder in ein containing div (das wird wie eine Reihe) gewickelt werden. Anstatt also:Wie umschließt man alle N Elemente im Eltern-Div in ERB (Rails)?

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

Ich brauche das Markup zu sein:

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

ich tun, um eine Lösung, aber ich bin nicht glücklich mit ihm. Ich habe schon früher einen besseren Weg gesehen, es in ERB zu tun, kann es aber nicht wieder finden.

Mein aktueller Code:

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

Antwort

15

Wie wäre es damit:

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

Sie können auch die each_slice (3) mit in_groups_of ersetzen (3, false) –

+0

Thankyou, Sir! Genau das suche ich. – tybro0103

+0

'in_groups_of' funktionierte nicht für mich. Diese Antwort 'each_slice' hat meine Zeit gerettet. –

0

Klingt wie eine große Chance, ein Modul zu verwenden

<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

Dies ist noch komplexer als der cycle() Helfer. Ich suche etwas einfacheres. – tybro0103

2

ich die Methode fand ich suchte . Es ist im Grunde identisch mit each_slice() von @HargrimmTheBleak geschrieben, hat aber einen freundlichen Namen:

in_groups_of()

Verwandte Themen