0

如何在每个页面重新加载时调用一次方法?由于多个控制器用于执行操作,在 ApplicationController 中定义 before_filter 失败

4

1 回答 1

2

当您说在一个操作中使用多个控制器时,您能更具体一点吗?通常,负责该操作的控制器中的 before_filter 就足够了。

如果您希望 before 过滤器影响多个控制器中的特定方法,则将方法本身放在 ApplicationController 中,但将 before_filter 放在包含该操作的每个控制器中。

class ApplicationController
  def foo
    @bar = 'bar'
  end
end

class UserController
  before_filter :foo, :only => [:method1]  

  def method1
    ...
  end

  def method2
    ...
  end
end

class StuffController
  before_filter :foo, :only => [:method2]  

  def method1
    ...
  end

  def method2
    ...
  end
end  

class UnimportantController
  # No before filter, neither of these methods will call :foo

  def method1
    ...
  end

  def method2
    ...
  end
end
于 2013-05-21T08:23:23.250 回答