目前,我有一个列表,显示数据库中每辆车的列表项。
实施例
= render partial: 'list_item', collection: (@vehicles && vehicles), as: :vehicle
我想要的只是在每10辆车后添加横幅。 (可能是100辆汽车。)最好的方法是什么?
答案 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 %>