如何从控制器中获取当前操作?

时间:2016-01-13 20:17:59

标签: ruby-on-rails ruby-on-rails-4

如何从控制器中获取当前操作? current_page?适用于视图,但不适用于控制器。

redirect_to step3_users_path unless current_page?(step3_users_path)

我也试过

controller.action_name == 'step3'

我也试过

params[:action_name] == 'step3'

4 个答案:

答案 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]来获得控制器动作的名称。