每行显示5条记录?

时间:2010-10-27 20:57:14

标签: ruby-on-rails

目前这只是一个很长的清单。如何显示每行5条记录而不是1?

<% @tags.each do |tag| %>

<p><%= tag_search(tag) %></p>

<% end %>

目前

tag1
tag2
tag3
tag4
tag5
tag6
tag7
...

期望的

tag1 tag2 tag3 tag4 tag5
tag6 tag7

我知道这是非常基本的,但我无法找到合适的谷歌搜索条件来自行获得答案。 谢谢!

这就是我最终使用的

<table>
<% @tags.in_groups_of(4, false) do |row_tag| %>
  <tr>
    <% for tag in row_tag %>
      <td><%= tag_search(tag) %></td>
    <% end %>
  </tr>
<% end %>
</table>

4 个答案:

答案 0 :(得分:10)

您可以使用ActiveSupport方法in_groups_of获取数组并将其放入组中

<% @tags.in_groups_of(5).each do |tag_array| %>
  <% tag_array.each |tag| %>
  ...

Original Doc from Rails Docs

%w(1 2 3 4 5 6 7).in_groups_of(3) {|g| p g}
  ["1", "2", "3"]
  ["4", "5", "6"]
  ["7", nil, nil]

答案 1 :(得分:2)

<% @tags.each_with_index do |tag, index| %>
  <%= tag_search(tag) %>
  <%= "<br />" if (index % 5).zero? %>
<% end %>

您也可以使用ActiveSupport的in_group_of

答案 2 :(得分:1)

可能有更好的方法,但这可行:

  <% @tags.each do |tag, i| %>
         <%= '<p>' if i == 1 %>
         <%= tag_search(tag) %>
         <% if i == 5 %>
             <% i = 0 %>
             </p>
         <% end %>
 <% end %>

答案 3 :(得分:0)

.ee应该在内循环上