每6个Rails每个循环插入标记?

时间:2010-05-17 19:00:26

标签: ruby-on-rails ruby loops

我有X个图像对象需要在视图中循环,并且想要每6个对象左右创建一个新的div(对于图库)。

我看过周期,但似乎改变了所有其他记录。有没有人知道每6次将代码插入视图的方法?

我可以用嵌套循环来做这件事,但我对这一点感到有点难过。

2 个答案:

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