2016-01-13 98 views
2

如何從控制器中獲取當前動作? current_page?適用於視圖,但不適用於控制器。如何從控制器中獲取當前操作?

redirect_to step3_users_path unless current_page?(step3_users_path) 

我也試過

controller.action_name == 'step3' 

我也試過

params[:action_name] == 'step3' 
+0

ACTION_NAME給你當前的動作名稱 – Joel

+0

@Joel'#action_name'甚至不是Rails中的一個方法。 http://api.rubyonrails.org/ – Chloe

回答

5

控制器具有action_name方法/訪問(在AbstractController::Base定義當前軌,ActionController::Base老年人)

+1

對於此處定義的邊欄:https://github.com/rails/rails/blob/master/actionpack/lib/abstract_controller/base.rb#L21 – Vasfed

+1

http://指南.rubyonrails.org/action_controller_overview.html明確聲明使用'action_name'而不是'params [:action]' – Vasfed

+1

請注意,正確的用法不是'controller.action_name',而是控制器代碼中的普通'action_name'。 – Raffael

1

這個工作。

logger.debug params 
redirect_to step3_users_path unless params[:action] == 'step3' 
1

可以使用__method__去當前方法的名稱。

def Klass 
    def method1 
    puts __method__ 
    end 
end 

> k = Klass.new 
> k.method1 
=> :method1 

一旦請求通過Rails的,您將能夠訪問此的控制器:

params[:controller] 
params[:action] 

在視圖中,您可以訪問action_name

+0

它在'before_filter'中。我不想要現在的方法。 – Chloe

+1

我加入到我的答案中 – Tilo

相關問題