如何从控制器中获取当前操作? current_page?
适用于视图,但不适用于控制器。
redirect_to step3_users_path unless current_page?(step3_users_path)
我也试过
controller.action_name == 'step3'
我也试过
params[:action_name] == 'step3'
答案 0 :(得分:10)
控制器具有action_name
方法/访问器(在AbstractController::Base
中为当前导轨定义,ActionController::Base
为旧版本)
答案 1 :(得分:1)
这很有用。
logger.debug params
redirect_to step3_users_path unless params[:action] == 'step3'
答案 2 :(得分:1)
您可以使用__method__
获取当前方法的名称。
例如
def Klass
def method1
puts __method__
end
end
> k = Klass.new
> k.method1
=> :method1
请求通过Rails后,您将能够在Controller中访问它:
params[:controller]
params[:action]
在视图中,您可以访问action_name
答案 3 :(得分:0)
一种简单的入门方法是在运行操作的代码中的某个位置设置断点。
如果您使用的是pry
,请使用binding.pry
,然后通过将params
写入控制台并按Enter键,可以列出该操作所传递的所有参数。 / p>
一旦获得了参数的名称,就可以使用例如params[:action]
来获得控制器动作的名称。