我在Ruby on Rails 2.3.8上工作,我有一组类别。所以,我想将它们列在每行三列中,每组10个,并根据需要包含尽可能多的行。类别的数量可以改变,因此功能应该是动态的。
是否有“铁路方式”来实现这一目标?或者哪种方式最好?
答案 0 :(得分:3)
看一下以下的railscasts剧集:
http://railscasts.com/episodes/28-in-groups-of
“in_groups_of”方法应该是您所需要的:
>> [1,2,3,4,5,6,7].in_groups_of(2, false)
=> [[1, 2], [3, 4], [5, 6], [7]]
in_groups_of的文档可在以下网址找到:
http://railsbrain.com/api/rails-2.3.2/doc/index.html?a=M001423&name=in_groups_of
答案 1 :(得分:1)
不知道它是否是“轨道方式”,但肯定是“我的方式”;)
# in controller
@categories = Category.all
# in view
<table>
<% @categories.each_with_index do |cat, index| %>
<%= "<tr>" if index % 30 == 0 %>
<%= "<td>" if index % 10 == 0 %>
<%= cat.name %>
<%= "</td>" if (index + 1) % 10 == 0 || index + 1 == @categories.size %>
<%= "</tr>" if (index + 1) % 30 == 0 || index + 1 == @categories.size %>
<% end %>
</table>
如果您要切换到Rails 3,则必须在raw
内放置任何HTML标记之前添加<%= %>
。