ruby-on-rails - 如何在 Rails 应用程序中获取路径的路线?

标签 ruby-on-rails ruby ruby-on-rails-3 rails-routing actiondispatch

给定一个方法和路径,我想询问 Rails 如何路由该请求,并且我希望能够从控制台和/或 rake 任务执行此操作。我认为这应该很简单 - ActionDispatch 对每个请求都执行此操作,并且路由测试方法显然也执行此操作。

(当前:Rails 3.0.x,但对于我正在编写的 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:路由集未最终确定”。

我正在仔细研究 ActionDispatch 代码,慢慢地解决这个问题,但如果有人立即知道答案,那将节省我相当多的时间。所以谢谢!

最佳答案

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

# GET request
Rails.application.routes.recognize_path('/some/path/63') 

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

这看起来不起作用,因为我之前尝试过手动初始化 RouteSet,这会干扰环境正确加载路由的能力。当我重新启动控制台 session 时,上述命令运行良好。

关于ruby-on-rails - 如何在 Rails 应用程序中获取路径的路线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24457026/

相关文章:

ruby-on-rails - 是否可以禁用 collection_select 的提示?

ruby-on-rails - Ruby:警告:您正在将 Rubygems 2.0.14 与 Spring 一起使用。至少升级到 Rubygems 2.1.0

ruby-on-rails - Rails 5 不会在生产环境中使用 ES6 代码预编译 JS 文件

ruby-on-rails - Rails 4,使用 ActiveRecord 的原始查询

ruby - 安装 RedCloth 时出错

ruby-on-rails-3 - Rails RESTful API + Devise - 如何检查用户的凭据

ruby-on-rails - 使用Devise时如何获取用户上次活跃时间?

ruby-on-rails - 基于另一个数组从一个数组中删除值的最快方法

ruby-on-rails - Rails 中的唯一搜索结果

ruby-on-rails - 使 div(td) 成为链接。火腿( rails )