ruby-on-rails Rails -控制器操作名称到字符串

mwyxok5s  于 2023-05-08  发布在  Ruby
关注(0)|答案(7)|浏览(213)

关于Rails的问题
如何在控制器动作中获取控制器动作的名称?
例如,代替

def create
  logger.info("create")
end

我想写一些像

def create
  logger.info(this_def_name)
end

如何获得this_def_name

fjnneemd

fjnneemd1#

Rails 2.X@controller.action_name
Rails 3.1.Xcontroller.action_nameaction_name
Rails 4+action_name

nafvub8i

nafvub8i2#

在Rails操作的特定情况下(与获取当前方法名称的一般情况相反),可以使用params[:action]
或者,您可能希望自定义Rails日志格式,以便操作/方法名称包含在格式中,而不是包含在日志消息中。

pwuypxnk

pwuypxnk3#

控制器名称:

<%= controller.controller_name %>

return => '用户'
操作名称:

<%= controller.action_name %>

return => 'show'
ID:

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

返回值=> '23'

ovfsdjhp

ovfsdjhp4#

此代码段适用于Rails3

class ReportsController < ApplicationController

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

end

将打印
……
ReportsController.summary
……

sqyvllje

sqyvllje5#

mikej的回答非常准确和有用,但我还想知道的是如何在rails中获得当前方法名称。
我发现可以使用self.current_method
很容易在http://www.ruby-forum.com/topic/75258找到

72qzrwbm

72qzrwbm6#

您可以像这样获取操作名称
控制器方法

def abc

   params[:action] #you can store this any variable or you can directly compare them.

   ab == params[:action] 
 
end

这支持从导轨4到导轨6的版本。

cunj1qz1

cunj1qz17#

我只是做了同样的事情。我在helper controller中做的,我的代码是:

def get_controller_name
  controller_name    
end

def get_action_name
  action_name   
end

这些方法将返回当前控制器和动作名称。希望能帮上忙

相关问题