这可能是一个有点奇怪的问题,但我想知道是否有人知道Rails快捷方式/系统变量或某些东西可以让我跟踪哪个控制器正在为一个页面服务以及该控制器调用哪个模型。显然我正在构建应用程序,所以我知道,但我想制作一个更通用的插件,能够追溯获取这些数据,而无需手动完成。
这有什么简单的快捷方式吗?
答案 0 :(得分:8)
控制器和操作在params
中定义为params[:controller]
和params[:action]
,但“模型”没有占位符,因为控制器方法可能会创建许多模型实例。
如果需要,您可能需要创建某种辅助方法来提供帮助:
def request_controller
params[:controller]
end
def request_action
params[:action]
end
def request_model
@request_model
end
def request_model=(value)
@request_model = value
end
在处理请求时,您必须在加载模型时明确设置模型:
@user = User.find(params[:id])
self.request_model = @user
答案 1 :(得分:7)
我知道有很多方法:
首先,您可以rake routes
查看路线列表。
其次,您可以将<%= "#{controller_name}/#{action_name}" %>
放在application.html.erb中,然后查看视图以查看其内容。如果你把它放在极端的底部,你将始终在页面底部获得该信息。
答案 2 :(得分:1)
可以通过params
哈希:params[:controller]
访问控制器。然而,实际上没有办法获得控制器使用的模型,因为任何控制器和任何模型之间都没有必要的关联。如果您有模型的实例,则可以检查object.class
以获取模型的类名。