我有X个图像对象需要在视图中循环,并且想要每6个对象左右创建一个新的div(对于图库)。
我看过周期,但似乎改变了所有其他记录。有没有人知道每6次将代码插入视图的方法?
我可以用嵌套循环来做这件事,但我对这一点感到有点难过。
答案 0 :(得分:102)
您可以将Enumerable#each_slice
与#each
结合使用,以避免内联计算。 each_slice
将数组分成n个块,在本例中为6。
<% @images.each_slice(6) do |slice| -%>
<div class="gallery">
<% slice.each do |image| -%>
<%= image_tag(image.url, :alt => image.alt) %>
<% end -%>
</div>
<% end -%>
答案 1 :(得分:13)
这是一个Ruby问题。您可以将其融入您的观点中。
@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