Jon*_*han 0 routes ruby-on-rails ruby-on-rails-5
我想要一个 Rails 应用程序支持的 URL 列表,但我不想提前提供任何参数。
例如,我想列出user_registration_pathas的路径/%{locale}/users/sign_up。
我可以获得一个命名路由列表,如下所示(在 Rails 控制台中测试):
Rails.application.routes.named_routes.helper_names
Run Code Online (Sandbox Code Playgroud)
输出示例:
["rails_info_properties_path", "rails_info_routes_path", "rails_info_path", "rails_mailers_path", "rails_service_blob_path", "rails_blob_path", "rails_blob_representation_path", "rails_representation_path", "rails_disk_service_path"...]
Run Code Online (Sandbox Code Playgroud)
Rails 有什么办法可以实现这一点吗?
你可以尝试使用这个命令:
Rails.application.routes.routes
.map { |r| { path: r.path.spec.to_s } }
Run Code Online (Sandbox Code Playgroud)
它会给你这个输出:
{:path=>"/admin/users/:id/edit(.:format)"},
{:path=>"/admin/users/:id(.:format)"},
{:path=>"/admin/users/:id(.:format)"},
{:path=>"/admin/users/:id(.:format)"},
Run Code Online (Sandbox Code Playgroud)
或者作为数组(您可以改进它,这只是一个简单的示例):
Rails.application.routes.routes
.flat_map { |r| r.path.spec.to_s }
.uniq
.map { |path| path.gsub('(.:format)', '') }
Run Code Online (Sandbox Code Playgroud)
[
"/admin/users",
"/admin/users/new",
"/admin/users/:id/edit",
"/admin/users/:id"
]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2529 次 |
| 最近记录: |