6

私のタイトルは紛らわしいかもしれません。私がやりたいことは、モデルのコレクションをループすることです。最初の 2 つはテンプレートをレンダリングし、次の 4 つは別のテンプレートをレンダリングし、次の 2 つは最初のものと同じテンプレートをレンダリングします。

このような:

  <% ads.each do |ad| %>
    <% # if it's 1-2, 7-8, 13-14 and so on render as big' %>
      <%= render 'front/home/big_ad', ad: ad %>
    <% # if it's 3-6, 9-12, 15-18 and so on render as small' %>
      <%= render 'front/home/small_ad', ad: ad %>
    <% end %>
  <% end %>

これを達成するための最もクリーンな方法は何でしょうか?

4

1 に答える 1

14

グループがさらに長くなる場合は、in_groups_ofコマンドを使用してそれらを切り替えることができますが、これらの仕様では、最も簡単な方法は次のとおりです。

<% ads.each_with_index do |ad, index| %>
  <% if (index % 6 < 2) %>
    <%= render 'front/home/big_ad', ad: ad %>
  <% else %>
    <%= render 'front/home/small_ad', ad: ad %>
  <% end %>
<% end %>
于 2012-06-27T14:48:20.527 に答える