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.X : controller.action_name
, action_name
Rails 4.X : action_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
我也是这样做的 我在帮助控制器中做到了,我的代码是:
def get_controller_name controller_name end def get_action_name action_name end
这些方法将返回当前的控制器和操作名称。 希望能帮助到你