我正在尝试编写一个可以列出所有可用路由的脚本,并为每个路由查询控制器和操作名称(有点像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"},
如何使用控制器名称访问隐藏在那里的哈希值。
作为一方,有没有办法从中确定路径?
答案 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