【发布时间】:2010-12-29 13:10:37
【问题描述】:
我在 Ruby on Rails 2.3.8 中工作,我有一个类别的集合。因此,我想将它们列在每行三列中,以 10 组为一组,并根据需要设置尽可能多的行。类别的数量可以改变,因此功能应该是动态的。
是否有“rails 方式”来完成此任务?或者哪种方法最好?
【问题讨论】:
标签: html ruby-on-rails css
我在 Ruby on Rails 2.3.8 中工作,我有一个类别的集合。因此,我想将它们列在每行三列中,以 10 组为一组,并根据需要设置尽可能多的行。类别的数量可以改变,因此功能应该是动态的。
是否有“rails 方式”来完成此任务?或者哪种方法最好?
【问题讨论】:
标签: html ruby-on-rails css
看看下面的 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
【讨论】:
不知道是不是“rails way”,但肯定是“my way”;)
# 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,则必须在将任何 HTML 标记放入 <%= %> 之前添加 raw。
【讨论】: