Rails在迭代后添加横幅

时间:2015-02-09 17:59:47

标签: ruby-on-rails ruby iteration

目前,我有一个列表,显示数据库中每辆车的列表项。

实施例

= render partial: 'list_item', collection: (@vehicles && vehicles), as: :vehicle

我想要的只是在每10辆车后添加横幅。 (可能是100辆汽车。)最好的方法是什么?

2 个答案:

答案 0 :(得分:4)

大卫有正确的想法,但正在做很多额外的工作。 Rails为您做到这一点。来自Rails Guides

  

Rails还在集合调用的部分中提供计数器变量,以集合成员后跟_counter命名。例如,如果您要渲染@products,则可以在部分内部引用product_counter来告诉您部分渲染的次数。这与as: :value选项无关。

在这种情况下,您需要做的就是将其添加到您的部分:

<% if list_item_counter % 10 == 0 %>
  <!-- Ad banner goes here -->
<% end %>

(或者你可以像大卫一样调用辅助方法。)

答案 1 :(得分:1)

我建议在您在问题中粘贴的代码中创建一个局部变量,以用作迭代器。在部分内,您可以使用这种类型的逻辑:

<%= ad_helper_func if @iterator_var % 10 == 0 %>
<% @iterator_var += 1 %>