2012-07-20 22 views
8

मेरे सदस्य इंडेक्स पेज बस सदस्यों की एक सूची है, लेकिन मैं चाहता हूं कि प्रत्येक 3 सदस्यों को एक div में लपेटा जाए (जो एक पंक्ति की तरह कार्य करेगा)। तो बजाय:ईआरबी (रेल) में पैरेंट div में प्रत्येक एन तत्वों को कैसे लपेटें?

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

मैं जरूरत मार्कअप होने के लिए:

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

मैं एक समाधान है, लेकिन मैं इसके साथ खुश नहीं हूँ। मैंने वास्तव में ईआरबी में इसे करने का बेहतर तरीका देखा है, लेकिन इसे फिर से नहीं मिला।

मेरे वर्तमान कोड:

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

उत्तर

15

कैसे इस बारे में:

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

तुम भी (3) each_slice in_groups_of साथ (3, गलत) की जगह ले सकता –

+0

ठनक यू, सर! यह वही है जो मैं ढूंढ रहा हूं। – tybro0103

+0

'in_groups_of 'मेरे लिए काम नहीं किया। इस उत्तर 'प्रत्येक_स्लिस' ने अपना समय बचाया। –

0

मैं विधि मैं खोज रहा था पाया एक मापांक

<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

यह चक्र() सहायक से भी अधिक जटिल है। मैं कुछ आसान खोज रहा हूँ। – tybro0103

2

उपयोग करने के लिए एक महान अवसर की तरह लगता है । यह मूल रूप से each_slice() @HargrimmTheBleak द्वारा पोस्ट की गई के समान है, लेकिन एक और अधिक अनुकूल नाम है:

in_groups_of()