几乎我在 Rails 应用程序中的所有控制器操作,都有第一行
@result = super
所以,我决定在 before_filter 中有这个声明,但不知何故这不起作用。我要么什么都没有渲染,要么
Filter chain halted as :result rendered or redirected
所以基本上,我如何为控制器中的每个动作调用 super ?
干杯。
更新:
这个控制器存在于一个可安装的引擎中,它的职责是操纵默认 api 的结果并再次渲染。
这是基本结构
class Api::Custom::PlayersController < Api::V1::PlayersController
before_filter :result
def result
@result = super
end
def func1
@result.first
end
def func2
...
更新2:
我想,现在我知道确切的问题了。这是我的控制器的继承结构
-ApiBaseContoller
-ApiPlayersController
-Api::Custom::PlayersController
即使我在最后一个控制器调用 before_filter 方法,它在祖父类“ApiBaseContoller”中触发它,并且在该控制器中,它不会知道 super 是什么。
我想知道 ApiPlayersController 和 Api::Custom::PlayersController 之间是否可以触发任何 before_filter 等效项。
-ApiBaseContoller
-ApiPlayersController
before_filter :do_something
-Api::Custom::PlayersController