Rails 3:我想列出我的rails应用程序中定义的所有路径

wae*_*218 132 routes ruby-on-rails ruby-on-rails-3

我想列出我的rails 3应用程序中所有已定义的辅助路径功能(由路由创建),如果可能的话.

谢谢,

hou*_*se9 216

rake routes
Run Code Online (Sandbox Code Playgroud)

要么

bundle exec rake routes
Run Code Online (Sandbox Code Playgroud)

  • 此外,如果您想要检查应用程序路由器是否*识别给定路径*,请参阅[this](http://stackoverflow.com/a/4513327). (2认同)
  • `rake paths` 已被弃用;使用“rails 路线”代替:https://github.com/rails/rails/pull/33660 (2认同)

Anw*_*war 61

更新

我后来发现,除了前往非路线之外,还有一种官方方式可以看到所有路线.这是http:// localhost:3000/rails/info/routes


虽然,可能会迟到,但我喜欢显示所有路线的错误页面.我经常尝试/routes直接从浏览器进入(或一些虚假)路径.Rails服务器自动给我一个路由错误页面以及定义的所有路由和路径.那非常有帮助:)

所以,只需转到http:// localhost:3000/routes 在此输入图像描述

  • 这被捆绑到Rails 4中,但问题是关于Rails 3.您需要安装Sextant gem才能在3中使用它. (4认同)

gay*_*vat 8

另一种解决方案是

Rails.application.routes.routes
Run Code Online (Sandbox Code Playgroud)

http://hackingoff.com/blog/generate-rails-sitemap-from-routes/

  • `Rails.application.routes.routes.map { |r| {别名:r.name,路径:r.path.spec.to_s,控制器:r.defaults[:controller],操作:r.defaults[:action]}}` (14认同)

Al *_*son 7

命令行界面

更新至版本 6

列出所有现有路由,您需要运行以下命令:

bundle exec rails routes
Run Code Online (Sandbox Code Playgroud)

捆绑执行

在捆绑包的上下文中执行命令

铁路路线

列出您定义的所有路线

例子

如果您的资源路由如下声明:

resource :credential, only: [:new, :create, :destroy]
Run Code Online (Sandbox Code Playgroud)

然后通过管道传输输出会很有帮助,这样您就可以grep查找您的特定资源。

例如: 捆绑 执行 Rails 路线 grep 示例


Win*_*fly 6

rake routes | grep <specific resource name>
Run Code Online (Sandbox Code Playgroud)

如果路由列表很长,则显示特定于资源的路由。


小智 5

尝试http://0.0.0.0:3000/routes使用Rails 5 API应用程序(即:仅面向JSON)将返回(从Rails beta 3开始)

{"status":404,"error":"Not Found","exception":"#> 
<ActionController::RoutingError:...
Run Code Online (Sandbox Code Playgroud)

但是,http://0.0.0.0:3000/rails/info/routes将呈现一个包含路径的漂亮,简单的HTML页面.