循环每个x元素

时间:2010-03-22 09:52:46

标签: ruby-on-rails loops

以5行显示包含20张图片的列表的最佳方法是什么?或者,换句话说,我该如何清理这个丑陋的片段?

<div class="row">
  <% @images.each_with_index do |image, index| %>
    <% if index != 0 && index % 5 == 0 %>
      </div><div class="row">
    <% end %>
    <%= image_tag image.url %>
  <% end %>
</div>

2 个答案:

答案 0 :(得分:3)

您可以使用each_slice以五行图像的形式循环显示图像:

<% @images.each_slice(5) do |row| %>
  <div class="row">
    <% row.each do |image| %>
      <%= image_tag image.url %>
    <% end %>
  </div>
<% end %>

答案 1 :(得分:1)

您还可以使用in_groups_of http://api.rubyonrails.org/classes/ActiveSupport/CoreExtensions/Array/Grouping.html,其中还有其他选项。