目前这只是一个很长的清单。如何显示每行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>
答案 0 :(得分:10)
您可以使用ActiveSupport方法in_groups_of获取数组并将其放入组中
<% @tags.in_groups_of(5).each do |tag_array| %>
<% tag_array.each |tag| %>
...
%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应该在内循环上