Rails – 控制器的动作名称string

我有一个Rails的问题。

如何在控制器操作中获取控制器操作的名称?

例如,而不是

def create logger.info("create") end 

我想写一些像

 def create logger.info(this_def_name) end 

什么是获得this_def_name

Rails的2.X@controller.action_name

Rails 3.1.Xcontroller.action_nameaction_name

Rails 4.Xaction_name

在Rails操作的特定情况下(与获取当前方法名称的一般情况相反),可以使用params[:action]

或者,您可能希望查看自定义Rails日志格式,以便将操作/方法名称包含在格式中,而不是放在日志消息中。

控制器名称:

 <%= controller.controller_name %> 

return =>'users'

行动名称:

 <%= controller.action_name %> 

return =>'show'

ID:

 <%= ActionController::Routing::Routes.recognize_path(request.url)[:id] %> 

return =>'23'

这段代码适用于Rails 3

 class ReportsController < ApplicationController def summary logger.debug self.class.to_s + "." + self.action_name end end 

将打印

。 。 。
ReportsController.summary
。 。 。

mikej的回答非常精确和有帮助,但是我也想知道的是如何在rails中获取当前的方法名称。

发现它可能与self.current_method

很容易find在http://www.ruby-forum.com/topic/75258

我也是这样做的 我在帮助控制器中做到了,我的代码是:

 def get_controller_name controller_name end def get_action_name action_name end 

这些方法将返回当前的控制器和操作名称。 希望能帮助到你