何时调用application_controller中的before_filters?奇怪的问题

时间:2011-10-13 21:33:48

标签: ruby-on-rails ruby

我开发了一个插件。该插件有一个声明,可以添加到应用程序控制器,如下所示:

class ApplicationController < ActionController::Base

  set_something_to(Account.first)
end

这一切都按预期工作。但是,当我使用before_filter动态获取要设置的值时,如下所示:

class ApplicationController < ActionController::Base

  before_filter :get_account
  set_something_to(@account)

  protected
    def get_account
      @account = Account.first
    end
end

这不起作用。传递给set_something_to声明的值为nil。为什么价值为零?动态传递值的正确方法是什么?

感谢您的时间。 欧文

1 个答案:

答案 0 :(得分:4)

在每个操作之前调用过滤器之前。如果您希望set_something_to(@account)正常工作,您也应该将它放在before过滤器中。例如:

class ApplicationController < ActionController::Base

  before_filter :configure_account

  protected

    def configure_account
      @account = Account.first
      set_something_to(@account)
    end

end