【发布时间】:2010-05-17 19:00:26
【问题描述】:
我有 X 个图像对象,我需要在视图中循环遍历,并希望每 6 个左右对象创建一个新 div(对于图库)。
我查看了循环,但它似乎改变了所有其他记录。有谁知道每 6 次向视图中插入代码的方法?
我可能可以用嵌套循环来做到这一点,但我有点难倒这个。
【问题讨论】:
标签: ruby-on-rails ruby loops
我有 X 个图像对象,我需要在视图中循环遍历,并希望每 6 个左右对象创建一个新 div(对于图库)。
我查看了循环,但它似乎改变了所有其他记录。有谁知道每 6 次向视图中插入代码的方法?
我可能可以用嵌套循环来做到这一点,但我有点难倒这个。
【问题讨论】:
标签: ruby-on-rails ruby loops
您可以将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 -%>
【讨论】:
@documents.each_hit_with_result.each_slice(6) do |slice|。来源:github.com/sunspot/sunspot/blob/master/sunspot/lib/sunspot/…
这是一个 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
【讨论】: