2010-05-17 16 views
32

मेरे पास छवि ऑब्जेक्ट्स की एक्स संख्या है जिसे मुझे एक दृश्य में लूप करने की आवश्यकता है और हर 6 ऑब्जेक्ट्स या एक गैलरी के लिए एक नया div बनाना चाहते हैं।प्रत्येक लूप सम्मिलित प्रत्येक लूप टैग रेल?

मैंने चक्र देखा है लेकिन ऐसा लगता है कि यह हर दूसरे रिकॉर्ड को बदलता है। क्या किसी को हर 6 बार दृश्य में कोड डालने का तरीका पता है?

मैं शायद इसे नेस्टेड लूप के साथ कर सकता हूं लेकिन मैं थोड़ी देर से इस पर फंस गया हूं।

उत्तर

101

आप #each साथ संयोजन के रूप में Enumerable#each_slice का उपयोग इनलाइन गणना से बचने के लिए कर सकते हैं। each_slice इस मामले में सर के खंडों में सरणी को तोड़ता है 6.

<% @images.each_slice(6) do |slice| -%> 
    <div class="gallery"> 
    <% slice.each do |image| -%> 
     <%= image_tag(image.url, :alt => image.alt) %> 
    <% end -%> 
    </div> 
<% end -%> 
+0

ऐसा करने के लिए एक और पारंपरिक तरीका लगता है .. मैं कोशिश करूँगा। –

+0

धन्यवाद कांटा, मैं अपने विचारों को साफ रखने के लिए इस विधि को पसंद करता हूं। धन्यवाद! –

+0

धन्यवाद, वास्तव में अच्छा – equivalent8

11

यह एक रूबी सवाल है। आप इसे जो कुछ भी करने का प्रयास कर रहे हैं, उसे जोड़ सकते हैं।

@list.each_with_index do |item, idx| 
    if((idx + 1) % 6 == 0) 
    # Poop out the div 
    end 
    # Do whatever needs to be done on each iteration here. 
end 
+0

बिल्कुल सही। आपका अधिकार, यह वास्तव में रूबी है। धन्यवाद। :) –

संबंधित मुद्दे