在rails应用程序中,如何获得路径的路由?



给定一个方法和路径,我想问Rails该请求将如何路由,我希望能够从控制台和/或从rake任务做到这一点。我认为这应该是直截了当的——ActionDispatch对每个请求都这样做,路由测试方法显然也这样做。

(当前:Rails 3.0。但是对于我正在编写的gem,我需要能够在Rails 3.0到4.1中至少做到这一点,并且可能在更旧的版本中也是如此。

我一直在尝试这样做:

routes = ActionDispatch::Routing::RouteSet.new
routes.recognize_path('/my/path/23/edit')

Rails.application.routes.recognize_path('/my/path/23/edit')

在这两种情况下,我得到"RuntimeError: route set not finished "。

我正在慢慢地钻研ActionDispatch代码,但如果有人知道答案,那将节省我相当多的时间。所以,谢谢你们!

规范的答案实际上是在我的问题中给出的:

# GET request
Rails.application.routes.recognize_path('/some/path/63') 
# POST request
Rails.application.routes.recognize_path('/some/path', {:method => :post })

看起来没有工作,因为我之前尝试手动初始化RouteSet,这干扰了环境正确加载路由的能力。当我重新启动控制台会话时,上面的命令工作正常。

相关内容

  • 没有找到相关文章

最新更新