【问题标题】:Rails add banner after iterationRails 在迭代后添加横幅
【发布时间】:2015-04-09 13:48:13
【问题描述】:

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

例如:

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

我想要的只是在每 10 辆车后添加一个横幅。 (可能有 100 辆汽车。)解决这个问题的最佳方法是什么?

【问题讨论】:

    标签: ruby-on-rails ruby iteration


    【解决方案1】:

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

    Rails 还在集合调用的部分中提供了一个计数器变量,该变量以集合成员命名,后跟_counter。例如,如果您正在渲染@products,则可以在部分中引用product_counter 来告诉您部分已被渲染了多少次。这不能与as: :value 选项一起使用。

    在这种情况下,您只需将其添加到您的部分:

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

    (或者您可以像 David 那样调用辅助方法。)

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 谢谢大卫,我明白你的意思了。我什至没有想到使用模数的意义。谢谢您的帮助。我会尽可能接受。
      猜你喜欢
      • 1970-01-01
      • 2023-03-15
      • 1970-01-01
      • 1970-01-01
      • 2017-06-05
      • 2020-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多