Ruby on rails 3 将哈希拆分为多个无序列表

Ruby on rails 3 将哈希拆分为多个无序列表,ruby-on-rails-3,views,html-lists,grouping,blueprint-css,Ruby On Rails 3,Views,Html Lists,Grouping,Blueprint Css,我一直在徒劳地寻找,以更干净的方式完成以下任务 我有一个从控制器调用的字符串散列: @categories = Category.find 我试图在三个独立的无序列表(ul)中显示结果 以下是我试图实现的丑陋版本: <div class="span-7"> <ul> <% @categories.first(4).each do |category| %> <li><%= category.name %&g

我一直在徒劳地寻找,以更干净的方式完成以下任务

我有一个从控制器调用的字符串散列:

@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)

您走对了方向。这应该是你想要的

<% 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 %>


你走对了方向。这应该是你想要的

<% 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 %>


您可能需要做一些诡计来找出如何将“last”类添加到最后一个div。。。我会仔细考虑的,好了。在我们迭代时计算类别应该可以做到这一点。这让我更接近了,但我现在得到了一个错误:
未定义nil的方法“name”:NilClass
其中name指的是
类别。name
感谢您在这方面的持续帮助,很抱歉这是一个难题@根据
debug@categories
Ah的输出判断,categories不是空的,我发现了#在_groups中,的_默认情况下用nil填充数组,因此需要检查内部循环中的category是否为nil。我将更新答案。您可能需要做一些技巧来找出如何将“last”类添加到最终div。。。我会仔细考虑的,好了。在我们迭代时计算类别应该可以做到这一点。这让我更接近了,但我现在得到了一个错误:
未定义nil的方法“name”:NilClass
其中name指的是
类别。name
感谢您在这方面的持续帮助,很抱歉这是一个难题@根据
debug@categories
Ah的输出判断,categories不是空的,我发现了#在_groups中,的_默认情况下用nil填充数组,因此需要检查内部循环中的category是否为nil。我会更新答案。