是否在before_filter中提供了目标方法的名称

时间:2012-05-24 17:13:00

标签: ruby-on-rails ruby ruby-on-rails-3

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

例如,我有以下代码

before_filter :login

def show
   #...
end

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

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

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

2 个答案:

答案 0 :(得分:6)

你可以简单地从params获取动作:params[:action]

答案 1 :(得分:1)

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

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