我一直在寻找以更干净的方式完成以下任务,但没有成功。
我有一个从我的控制器调用的字符串散列:
@categories = Category.find我尝试在三个单独的无序列表(ul)中显示结果。
下面是我试图实现的一个丑陋的版本:
<div class="span-7">
<ul>
<% @categories.first(4).each do |category| %>
<li><%= category.name %></li>
<% end %>
</ul>
</div>
<div class="span-7">
<ul>
<% @categories[5..8].each do |category| %>
<li><%= category.name %></li>
<% end %>
</ul>
</div>
<div class="span-8 last">
<ul>
<% @categories[9..12].each do |category| %>
<li><%= category.name %></li>
<% end %>
</ul>
</div>(注意:我使用的是BlueprintCSS,因此超出了"span-x")
我认为有一种更简洁的方法可以使用分组(http://rails.rubyonrails.org/classes/ActiveSupport/CoreExtensions/Array/Grouping.html)来实现这一点,但我想不出如何将所有这些结合在一起。
如果有人能给我指出正确的方向,我将不胜感激。谢谢。
(我使用的是Rails 3.0.11)
发布于 2012-05-07 23:57:08
你在正确的轨道上。这应该可以做你想要的事情。
<% category_count = 0 %>
<% @categories.in_groups_of(4) do |group| %>
<% category_count += group.size %>
<div class="<%= category_count == @categories.size ? "span-8 last" : "span-7" %>">
<ul>
<% group.each do |category| %>
<% if category %>
<li><%= category.name %></li>
<% end %>
<% end %>
</ul>
</div>
<% end %>https://stackoverflow.com/questions/10485044
复制相似问题