几乎我在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”中触发它,在那个控制器中,它不会知道超级是什么。
我想知道是否有任何可以在ApiPlayersController和Api :: Custom :: PlayersController之间触发的before_filter等效项。
-ApiBaseContoller
-ApiPlayersController
before_filter :do_something
-Api::Custom::PlayersController
答案 0 :(得分:0)
如果您的目的是捕获操作的输出并进行操作,那么您需要使用around_filter
,而不是before_filter
。我不确定这是否适用于rails&#39;新的(ish)流媒体功能。