我开发了一个插件。该插件有一个声明,可以添加到应用程序控制器,如下所示:
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。为什么价值为零?动态传递值的正确方法是什么?
感谢您的时间。 欧文
答案 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