Ruby on rails 在rails控制台会话中识别路由
假设我有一个路由器助手,我想了解更多信息,比如blogs\u path,我如何在控制台中找到它背后的map语句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几年前的页
我尝试生成并识别,但发现无法识别的方法错误,即使在我确实需要'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
?@brittohaloranRails.application.routes.url\u helpers.my\u path\u helper
这太棒了,这个技巧帮助我解决了另一个问题,非常感谢:)这个方法接受一个散列选项,因此,要检查特定的HTTP动词,可以使用:r.recognize_path”/station/submit,方法:“POST”
似乎不需要include ActionDispatch::Routing
。这是包含在文件中的一个很好的候选者。pryrc
或。irbrc
文件找到了答案…