识别rails控制台Session中的路由

时间:2010-05-06 02:31:00

标签: ruby-on-rails routes

假设我有一个路由器帮助器,我想要更多信息,比如blogs_path,我如何在控制台中查找背后的地图语句。

我尝试生成并识别并且我得到了无法识别的方法错误,即使我确实需要'config / routes.rb'

5 个答案:

答案 0 :(得分:92)

Zobie's Blog上有一个很好的总结示例,展示了如何手动检查URL到控制器/动作映射和反向。例如,从

开始
 r = Rails.application.routes

访问路径对象(Zobie的页面,几年前,说要使用ActionController::Routing::Routes,但现在已弃用,而不是Rails.application.routes)。然后,您可以根据URL检查路由:

 >> r.recognize_path "/station/index/42.html"
 => {:controller=>"station", :action=>"index", :format=>"html", :id=>"42"}

并查看为给定控制器/操作/参数组合生成的URL:

 >> r.generate :controller => :station, :action=> :index, :id=>42
 => /station/index/42

谢谢,Zobie!

答案 1 :(得分:51)

在Rails 3.2应用程序的控制台中:

# include routing and URL helpers
include ActionDispatch::Routing
include Rails.application.routes.url_helpers

# use routes normally
users_path #=> "/users"

答案 2 :(得分:34)

基本上(如果我理解你的问题),归结为包括UrlWriter模块:

   include ActionController::UrlWriter
   root_path
   => "/"

或者您可以将app添加到控制台中的呼叫中,例如:

   ruby-1.9.2-p136 :002 > app.root_path
   => "/" 

(这是所有Rails v.3.0.3)

答案 3 :(得分:3)

如果您看到

等错误
ActionController::RoutingError: No route matches

它应该工作的地方,你可能正在使用一个rails gem或引擎,它会像Spree那样在路径之前做一些事情,你可能需要做一些其他事情来在控制台中查看路径。

在狂欢的情况下,这是在路线文件

Spree::Core::Engine.routes.prepend do
  ...
end

像@ mike-blythe建议的那样,你可以在generaterecognize_path之前完成这项工作。

r = Spree::Core::Engine.routes

答案 4 :(得分:2)

从项目目录运行routes命令将显示您的路由:

rake routes

这是你的想法吗?