在我的应用程序中,我将有一个广告横幅,但它不会显示在每一页。因此,我在应用程序控制器中定义了广告横幅:
before_action :set_ad_banner
def set_ad_banner
@ad_banner = Advertising
.where('date_start_on <= ? AND date_end_on >= ?', Date.today, Date.today)
.order('RAND()')
.take
impressionist(@ad_banner)
end我使用impressionist创业板查看广告显示了多少次。但是这样做,就像现在设置的那样,每次加载任何页面时都会计算印象,即使没有带有横幅的content_for标记。我还试图将代码移到视图中,但这段代码:impressionist(@ad_banner)在视图中不工作。有什么办法解决这个问题吗?谢谢。
发布于 2017-10-06 12:49:19
例如,您可以使用
skip_before_action :set_ad_banner, only: [:action1, :action2]为了避免对从ApplicationController继承的控制器中的某些操作调用此方法,其中定义了before_action。指南在这里。
例如:
class PostsController < ApplicationController
skip_before_action :set_ad_banner, only: [:index]
def index
# some code here
end
def show
# some code here
end
end在上面的示例中,set_ad_banner不会在index操作之前被调用,而是在show之前被调用。
如果您根本不想在某些控制器中调用它,请使用skip_before_action :set_ad_banner而不使用only/except。
https://stackoverflow.com/questions/46605949
复制相似问题