每个 Ruby,根据索引执行不同的操作,具有模式?

标签 ruby erb

好吧,我的标题可能令人困惑。我想要做的是遍历模型集合,对于前两个模型,渲染一个模板,为接下来的四个渲染一个不同的模板,接下来的两个渲染与第一个模型相同的模板,等等。

像这样:

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

相关文章:

mysql - "NOT IN"用于事件记录

ruby - erb & HTML, input is, name, value 应该怎么命名?

ruby - 逗号有时不是多余的吗?

ruby - 如何检查给定目录是否存在于 Ruby 中

ruby - Sinatra/Ruby 默认一个参数

javascript - Textmate 中 js.erb 文件更好的语法突出显示

Javascript 保持页面状态 - 最佳实践?

ruby - Vim 多个元键

ruby-on-rails - 使用Nokogiri将<img src/>标签替换为<%= image_tag %>?

css - 使用 rails 使类(class)类型的值具有独特的颜色