6

好的,所以我的标题可能会令人困惑。我想要做的是循环遍历一组模型,对于前两个,渲染一个模板,接下来的四个渲染一个不同的模板,接下来的两个渲染与第一个相同的模板,依此类推。

像这样:

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