Ruby on rails 在rails控制台会话中识别路由

Ruby on rails 在rails控制台会话中识别路由,ruby-on-rails,routes,Ruby On Rails,Routes,假设我有一个路由器助手,我想了解更多信息,比如blogs\u path,我如何在控制台中找到它背后的map语句 我尝试生成并识别,但发现无法识别的方法错误,即使在我确实需要'config/routes.rb'之后。从项目目录运行routes命令将显示您的路由: rake routes 这就是您的想法吗?这里有一个很好的总结,并举例说明如何手动检查控制器/操作映射的URL,反之亦然。例如,从 r = Rails.application.routes 访问routes对象(Zobie几年前的页

假设我有一个路由器助手,我想了解更多信息,比如blogs\u path,我如何在控制台中找到它背后的map语句


我尝试生成并识别,但发现无法识别的方法错误,即使在我确实需要'config/routes.rb'之后。

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

rake routes

这就是您的想法吗?

这里有一个很好的总结,并举例说明如何手动检查控制器/操作映射的URL,反之亦然。例如,从

 r = Rails.application.routes
访问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
谢谢,佐比

基本上(如果我正确理解您的问题),它可以归结为包含UrlWriter模块:

   include ActionController::UrlWriter
   root_path
   => "/"
或者,您可以在控制台中的呼叫前预发应用程序,例如:

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

(这是所有Rails版本3.0.3)

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

#包括路由和URL帮助程序
包含ActionDispatch::路由

包括Rails.application.routes.url\u帮助程序 #正常使用路线 用户路径#=>“/users”
如果您看到以下错误

ActionController::RoutingError: No route matches
在它应该工作的地方,您可能正在使用rails gem或引擎来执行类似Spree的操作。在Spree预处理路由的地方,您可能需要执行其他操作来在控制台中查看路由

对于spree,这在routes文件中

Spree::Core::Engine.routes.prepend do
  ...
end
要像@mike blythe建议的那样工作,您需要在
生成
识别路径
之前执行此操作

r = Spree::Core::Engine.routes

rake routes将提供所有路由。我正在尝试一些更具体的方法,比如.generate和.recognize方法,除了helpers。所以,如果我在blogs\u path中输入,我应该得到:action=>index,:controller=>:blogclude Rails.application.routes.url\u helpers是Rails的3种方法。对于某些路由,您需要为它们设置一个默认主机才能工作,例如默认的\u url\u选项[:host]=“foo”Nice。有没有一种方法可以用这个方法测试命名路由,比如
root\u path
?@brittohaloran
Rails.application.routes.url\u helpers.my\u path\u helper
这太棒了,这个技巧帮助我解决了另一个问题,非常感谢:)这个方法接受一个散列选项,因此,要检查特定的HTTP动词,可以使用:
r.recognize_path”/station/submit,方法:“POST”
似乎不需要
include ActionDispatch::Routing
。这是包含在
文件中的一个很好的候选者。pryrc
。irbrc
文件找到了答案…