首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在应用程序控制器中定义变量,但不要在不存在content_for标记的页面上使用它

在应用程序控制器中定义变量,但不要在不存在content_for标记的页面上使用它
EN

Stack Overflow用户
提问于 2017-10-06 12:39:06
回答 1查看 61关注 0票数 1

在我的应用程序中,我将有一个广告横幅,但它不会显示在每一页。因此,我在应用程序控制器中定义了广告横幅:

代码语言:javascript
复制
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)在视图中不工作。有什么办法解决这个问题吗?谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-06 12:49:19

例如,您可以使用

代码语言:javascript
复制
skip_before_action :set_ad_banner, only: [:action1, :action2]

为了避免对从ApplicationController继承的控制器中的某些操作调用此方法,其中定义了before_action指南在这里

例如:

代码语言:javascript
复制
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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46605949

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档