有没有办法在之前的过滤器中使目标方法的名称可用。
例如,我有以下代码
before_filter :login
def show
#...
end
def login
# ...
# get the name of method original called
# ...
end
调用 http://<host>/show
,随后调用login
我可以获得show
字符串或类似内容,以便我可以将指令传递给登录,该指令实际上发生在不同的控制器上以返回到原始目标方法
答案 0 :(得分:6)
你可以简单地从params获取动作:params[:action]
答案 1 :(得分:1)
正如@apneadiving所提到的,你可以访问params[:action]
来获得“目标”(即“显示”,“索引”等)。
需要注意的一点是,通常对于before_filters,您应该使用request.params
而不是params
,因为有时只使用params
会导致奇怪的行为(我过去就是这样做的)我不记得确切的奇怪行为,但这并不理想。此外,如果您要更新params,我发现我需要合并到request.params而不是像params[:key] = value
这样做。