这可能是一个有点奇怪的问题,但我想知道是否有人知道Rails快捷方式/系统变量或其他什么东西,可以让我跟踪哪个控制器正在为页面提供服务,该控制器调用哪个模型。很明显,我正在构建这个应用程序,所以我知道,但我想做一个更通用的插件,能够追溯到这些数据,而无需手动处理。
有什么简单的捷径吗?
控制器和操作在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
我知道有很多方法:
首先,您可以执行rake routes
并查看路线列表。
其次,您可以将<%= "#{controller_name}/#{action_name}" %>
放在application.html.erb中,然后查看视图以查看它的内容。如果你把它放在最底部,你总是会在页面底部得到这些信息。
可以通过params
散列访问控制器:params[:controller]
。然而,实际上并没有办法让控制器使用模型,因为任何控制器和任何模型之间都没有必要的相关性。如果您有一个模型的实例,您可以检查object.class
来获取模型的类名。