2015-04-02 22 views
2

我用這個方法來列出我的Rails應用程序的所有路由:列出所有軌與HTTP方法途徑有關

def routes 
    Rails.application.routes.routes.collect do |r| 
    { path: r.path.spec.to_s } 
    end 
end 

我的結果是:

[ 
    { :path => '/my/path/' }, 
    { :path => '/my/path2/' }, 
    ... 
] 

我想也獲得HTTP方法用於該路線。怎麼做?
探索類文檔我找不到它。

預期的結果是:

[ 
    { :path => '/my/path/', :method => :get }, 
    { :path => '/my/path2/', :method => :post }, 
    ... 
] 

有一種方式來獲得相關的路線的HTTP方法? (或方法列表)

回答

3

ActionDispatch::Journey::Route有一個verb方法返回一個RegExp

你可以試試這個:

def routes 
    Rails.application.routes.routes.collect do |r| 
     { path: r.path.spec.to_s, :verb => r.verb.source[/[a-z]+/i].to_sym } 
    end 
end 
+3

嘛。你已經給出了答案。更好地評論':verb => r.verb.source [/ [a-z] +/i] .to_sym'。 – 2015-04-02 12:30:35

+1

請參閱'Rails.application.routes.routes.map {| r | r.verb.source} #=> [「」,「^ GET $」,「^ GET $」,「^ GET $」,「^ POST $」,「^ DELETE $」,「^ POST $」, ..]' – 2015-04-02 13:04:14

相關問題