好吧,我的标题可能令人困惑。我想要做的是遍历模型集合,对于前两个模型,渲染一个模板,为接下来的四个渲染一个不同的模板,接下来的两个渲染与第一个模型相同的模板,等等。
像这样:
<% 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 %>
完成此任务最干净的方法是什么?
最佳答案
如果您的组甚至更长,那么您可以使用 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 %>
关于每个 Ruby,根据索引执行不同的操作,具有模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11228829/