关于Rails的问题如何在控制器动作中获取控制器动作的名称?例如,代替
def create logger.info("create") end
我想写一些像
def create logger.info(this_def_name) end
如何获得this_def_name?
this_def_name
fjnneemd1#
Rails 2.X:@controller.action_nameRails 3.1.X:controller.action_name、action_nameRails 4+:action_name
@controller.action_name
controller.action_name
action_name
nafvub8i2#
在Rails操作的特定情况下(与获取当前方法名称的一般情况相反),可以使用params[:action]或者,您可能希望自定义Rails日志格式,以便操作/方法名称包含在格式中,而不是包含在日志消息中。
params[:action]
pwuypxnk3#
控制器名称:
<%= controller.controller_name %>
return => '用户'操作名称:
<%= controller.action_name %>
return => 'show'ID:
<%= ActionController::Routing::Routes.recognize_path(request.url)[:id] %>
返回值=> '23'
ovfsdjhp4#
此代码段适用于Rails3
class ReportsController < ApplicationController def summary logger.debug self.class.to_s + "." + self.action_name end end
将打印……ReportsController.summary……
sqyvllje5#
mikej的回答非常准确和有用,但我还想知道的是如何在rails中获得当前方法名称。我发现可以使用self.current_method很容易在http://www.ruby-forum.com/topic/75258找到
72qzrwbm6#
您可以像这样获取操作名称控制器方法
def abc params[:action] #you can store this any variable or you can directly compare them. ab == params[:action] end
这支持从导轨4到导轨6的版本。
cunj1qz17#
我只是做了同样的事情。我在helper controller中做的,我的代码是:
def get_controller_name controller_name end def get_action_name action_name end
这些方法将返回当前控制器和动作名称。希望能帮上忙
7条答案
按热度按时间fjnneemd1#
Rails 2.X:
@controller.action_name
Rails 3.1.X:
controller.action_name
、action_name
Rails 4+:
action_name
nafvub8i2#
在Rails操作的特定情况下(与获取当前方法名称的一般情况相反),可以使用
params[:action]
或者,您可能希望自定义Rails日志格式,以便操作/方法名称包含在格式中,而不是包含在日志消息中。
pwuypxnk3#
控制器名称:
return => '用户'
操作名称:
return => 'show'
ID:
返回值=> '23'
ovfsdjhp4#
此代码段适用于Rails3
将打印
……
ReportsController.summary
……
sqyvllje5#
mikej的回答非常准确和有用,但我还想知道的是如何在rails中获得当前方法名称。
我发现可以使用self.current_method
很容易在http://www.ruby-forum.com/topic/75258找到
72qzrwbm6#
您可以像这样获取操作名称
控制器方法
这支持从导轨4到导轨6的版本。
cunj1qz17#
我只是做了同样的事情。我在helper controller中做的,我的代码是:
这些方法将返回当前控制器和动作名称。希望能帮上忙