1

私は、よりクリーンな方法で以下を達成するために無駄に検索してきました。

コントローラーから呼び出している文字列のハッシュがあります。

@categories = Category.find

結果を 3 つの個別の順序なしリスト (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 を使用しています)

4

1 に答える 1

1

あなたは正しい方向に進んでいます。これはあなたが望むことをするはずです。

<% 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 %>
于 2012-05-07T15:57:07.997 に答える