在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议的那样工作,在generate
或recognize_path
path之前,您就可以执行此操作。
r = Spree::Core::Engine.routes
从您的项目目录运行routes命令将显示您的路由:
rake routes
这是你想到的吗?