4

有没有办法让目标方法的名称在前置过滤器中可用。

例如,我有以下代码

before_filter :login

def show
   #...
end

def login
   # ...
   # get the name of method original called 
   # ...
end 

http://<host>/show被调用,随后调用 login

我可以获得一个show字符串或类似的东西,以便我可以将指令传递给实际发生在不同控制器上的登录,以返回原始目标方法

4

2 回答 2

6

您可以简单地从参数中获取操作:params[:action]

于 2012-05-24T18:34:50.860 回答
1

正如@apneadiving 提到的,您可以访问params[:action]以获取“目标”(即“显示”、“索引”等)。

需要注意的一点是,通常对于 before_filters 你应该使用request.params而不是仅仅params因为有时使用 justparams会导致奇怪的行为(我过去做过。我不记得确切的奇怪行为,但它并不理想)。另外,如果您要更新参数,我发现我需要合并到 request.params 而不是只做类似params[:key] = value.

于 2012-05-24T17:52:00.780 回答