Pav*_* K. 157 ruby-on-rails function
我有一个Rails问题.
如何在控制器操作中获取控制器操作的名称?
例如,而不是
def create
logger.info("create")
end
Run Code Online (Sandbox Code Playgroud)
我想写点类似的东西
def create
logger.info(this_def_name)
end
Run Code Online (Sandbox Code Playgroud)
有什么方法可以获得this_def_name?
Jel*_*Cat 329
Rails 2.X:@controller.action_name
Rails 3.1.X : controller.action_name,action_name
Rails 4.X:action_name
mik*_*kej 33
在Rails操作的特定情况下(与获取当前方法名称的一般情况相反),您可以使用 params[:action]
或者,您可能希望查看自定义Rails日志格式,以便操作/方法名称包含在格式中,而不是包含在日志消息中.
dum*_*umP 15
控制器名称:
<%= controller.controller_name %>
Run Code Online (Sandbox Code Playgroud)
return =>'users'
动作名称:
<%= controller.action_name %>
Run Code Online (Sandbox Code Playgroud)
return =>'show'
ID:
<%= ActionController::Routing::Routes.recognize_path(request.url)[:id] %>
Run Code Online (Sandbox Code Playgroud)
return =>'23'
这个代码段适用于Rails 3
class ReportsController < ApplicationController
def summary
logger.debug self.class.to_s + "." + self.action_name
end
end
Run Code Online (Sandbox Code Playgroud)
将打印
...
ReportsController.summary
...
| 归档时间: |
|
| 查看次数: |
99443 次 |
| 最近记录: |