如何用before_filter调用super?

时间:2013-05-24 12:39:41

标签: ruby-on-rails api

几乎我在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

1 个答案:

答案 0 :(得分:0)

如果您的目的是捕获操作的输出并进行操作,那么您需要使用around_filter,而不是before_filter。我不确定这是否适用于rails&#39;新的(ish)流媒体功能。