收集所有有'GET'方法的Rake路线

时间:2012-08-03 17:15:10

标签: ruby-on-rails-3 rake

我有一系列rake路由,我试图提取所有路由,其中​​route.conditions [:request_method]为GET。

问题:

:request_method is a regex (:request_method=>/^GET$/)

> routes.select { |route| route.conditions[:request_method] == /GET/ }  
> []

我认为我的选择是正确的。这有效,并输出所有路线方法:

> routes.each { |route| print route.conditions[:request_method] }
> {:request_method=>/^GET$/}{:request_method=>/^GET$/}{:request_method=>/^PUT$/}{:request_method=>/^GET$/}{:request_method=>/^PUT$/}{:request_method=>/^POST$/}{:request_method=>/^GET$/}{:request_method=>/^GET$/}

我有什么想法可以实现这个目标?

1 个答案:

答案 0 :(得分:0)

找到我的答案。 routes.each返回了Journey对象,所以我首先创建了自己的自定义哈希:

routes = Rails.application.routes.routes.to_a
routes = routes.collect { |route| {name: route.name, method: route.verb} }
routes = routes.select { |route| route[:method] == /^GET$/ }

我确信这可以更优雅地重做,所以我愿意改变。它起作用,这是最重要的部分。