如何以编程方式列出所有设计路线

How to programmatically list all devise routes

我正在使用设计来验证我的 Rails 4.1.9 应用程序中的用户。

我需要在 javascript 文件中列出所有设计路线。

我试过这样做:

all_routes = Rails.application.routes.routes.map do |route|
    route.path.spec.to_s.gsub('(.:format)', '')
end

这只是打印所有 rails 路线。我怎样才能只得到设计的?

我试图检查控制器,但我不知道该怎么做...

使用路由控制器确定路由是否属于设计控制器:route.defaults[:controller],如果您自定义或跳过自己的默认路由,这可能会变得棘手:

一旦你有了控制器,例如:"devise/sessions" 应该很容易询问它是否是 .starts_with? "devise" 或类似的东西。希望对您有所帮助!

这可能是一个可靠的方法。即使在自定义控制器的情况下它也应该工作。

# Ask devise what controllers is has mapped
devise_controllers = Devise.mappings.values.map do |mapping|
  mapping.controllers.map{|k, v| v}}
end.flatten.uniq
# Ask rails for the routes that resolve to devise controllers
Rails.application.routes.routes.select do |route|
  devise_controllers.include? route.defaults[:controller]
end