Rails.application.routes列出所有路由并确定控制器

时间:2014-10-28 15:55:36

标签: ruby-on-rails ruby

我正在尝试编写一个可以列出所有可用路由的脚本,并为每个路由查询控制器和操作名称(有点像rake路由)。

如果我运行Rails.application.routes.routes我可以看到数据全部存在。我似乎无法访问它。

 @named_routes=
  {"root"=>
    #<ActionDispatch::Journey::Route:0x007fc2cb40a598
     @app=
      #<ActionDispatch::Routing::RouteSet::Dispatcher:0x007fc2cb40b448
       @controller_class_names=#<ThreadSafe::Cache:0x007fc2cb40b420 @backend={}, @default_proc=nil>,
       @defaults={:trailing_slash=>false, :controller=>"home", :action=>"show"},
       @glob_param=nil>,
     @constraints={:required_defaults=>[:trailing_slash, :controller, :action], :request_method=>/^GET$/},
     @decorated_ast=nil,
     @defaults={:trailing_slash=>false, :controller=>"home", :action=>"show"},

如何使用控制器名称访问隐藏在那里的哈希值。

作为一方,有没有办法从中确定路径?

1 个答案:

答案 0 :(得分:4)

如果我理解你的问题,这应该有效:

Rails.application.routes.routes.named_routes.values.map(&:defaults)

然后你可以这样做:

Rails.application.routes.routes.named_routes.values.map do |route|
  "#{route.defaults[:controller]}#{route.defaults[:action]}"
end