在rails console Session中识别路由

假设我有一个路由器助手,我想要更多的信息,比如blogs_path,我如何在控制台中find背后的映射语句。

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

在Zobie的博客中有一个很好的总结,展示了如何手动检查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!

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

 # include routing and URL helpers include ActionDispatch::Routing include Rails.application.routes.url_helpers # use routes normally users_path #=> "/users" 

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

  include ActionController::UrlWriter root_path => "/" 

或者,您可以在应用程序中添加应用程序,例如:

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

(这是所有的Rails v 3.0.3)

如果你看到类似的错误

 ActionController::RoutingError: No route matches 

它应该在哪里工作,你可能会使用一个轨道gem或引擎,像Spree做的东西它prepends路线,你可能需要做一些其他的东西在控制台中查看路线。

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

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

而且像@迈克 – 布莱思(mike-blythe)所build议的那样工作,在generaterecognize_pathpath之前,您就可以执行此操作。

 r = Spree::Core::Engine.routes 

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

 rake routes 

这是你想到的吗?