2015-02-09 57 views
0

目前,我有一个列表,显示列表项,为我们的数据库中的每辆车。Rails添加横幅后迭代

例:

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

我要的仅仅是每10辆汽车后添加的一面旗帜。 (可能是100辆汽车。)最好的方法是什么?

回答

4

大卫有正确的想法,但正在做很多额外的工作。 Rails为你做这件事。从Rails Guides

的Rails也使得内的部分由收集称为可用计数器变量,收集随后_counter成员的名字命名。例如,如果您渲染的是@products,则在部分内可以参考product_counter来告诉您已渲染部分的次数。这不适用于as: :value选项。

在这种情况下,所有你需要做的就是添加到您的部分:(或者你可以像大卫确实调用一个辅助方法)

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

1

我会推荐在代码中创建一个局部变量,您已将其粘贴到您的问题中用作迭代器。在部分你可以使用这种类型的逻辑:

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

感谢大卫,我明白你的意思。而且使用Modulo的观点也没有出现在我身上。谢谢您的帮助。我会尽可能接受。 – 2015-02-09 18:06:36