如何查看哪些rails控制器/型号正在为页面提供服务?

时间:2011-05-24 15:01:52

标签: ruby-on-rails ruby ruby-on-rails-3

这可能是一个有点奇怪的问题,但我想知道是否有人知道Rails快捷方式/系统变量或某些东西可以让我跟踪哪个控制器正在为一个页面服务以及该控制器调用哪个模型。显然我正在构建应用程序,所以我知道,但我想制作一个更通用的插件,能够追溯获取这些数据,而无需手动完成。

这有什么简单的快捷方式吗?

3 个答案:

答案 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以获取模型的类名。