【问题标题】:How to make a method appear before ALL of the controllers action如何使方法出现在所有控制器操作之前
【发布时间】:2012-08-23 11:07:51
【问题描述】:

我的 rails 应用程序中有几个控制器(UserController、PostController、SessionController 等...)

在所有每个操作之前,我想使用 gon gem. 传递一个 json 对象

我已将这行代码添加到我的应用程序助手中:

module ApplicationHelper

   ...

  def adding_gon
      gon.signed_in = signed_in?      
  end
end

我还添加了可供所有控制器使用的 ApplicationHelper:

class ApplicationController < ActionController::Base
  include ApplicationHelper
end

问题是现在我需要去每个控制器写这行代码:

before_filter :adding_gon

将这行代码写入每个控制器是相当重复的。

有没有办法让这个方法在所有动作之前执行?

【问题讨论】:

  • 只是一个猜测:你不能把它添加到应用程序控制器吗? (我假设你的其他控制器继承自它)
  • 更多信息请阅读answer

标签: ruby-on-rails controller helpers


【解决方案1】:

由于控制器通常继承自 ApplicationController,因此您不必将 before_filter 添加到每个控制器。只需在 ApplicationController 的类定义中添加该行,过滤器就会在所有子控制器的操作之前执行,除非您是从其他控制器继承的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-23
    • 1970-01-01
    • 2015-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多