2010-09-08 81 views
17

我可以在我的導軌應用程序中獲得所有路線嗎?我需要像rake routes這樣的輸出並將結果放入數組中。如何讓我的rails應用程序中的所有路線?

可能嗎?怎麼樣?

+1

你需要在哪裏輸出? – jordinl 2010-09-08 23:05:56

+2

對於Rails 3:'Rails.application.routes.routes.to_a'(請參閱[我的原始答案](http://stackoverflow.com/a/10576105/407213)) – Dorian 2012-05-13 23:45:43

回答

15

你可以看看rails從rake任務中拋出這些路由的方式。它在/gems/rails/2.3.x/lib/tasks/routes.rake for Rails 2.似乎基本上在ActionController::Routing::Routes.routes在一般情況下,然後審問。

+2

對於Rails 4,它現在處於railties gem – Neikos 2014-06-06 13:07:49

10

好了,獨立的在你需要它,你可以這樣做:

routes = `rake routes`.split("\n") 

甚至:

routes = `rake routes`.split("\n").map{ |r| r.gsub(', ', ',').split(' ') } 
5

爲了傳播頭痛,這是acomplish的是,我這樣做基於@jordini回答:

Rails.application.routes.routes.to_a.each do |rota| 
    if rota.app.instance_variable_defined? '@defaults' 
     perm = Permission.where({ 
     :acao => rota.defaults[:action], 
     :controller => rota.defaults[:controller], 
     :verbo => rota.verb.source.to_s.gsub("^","").gsub("$","").downcase 
    ).first_or_create 
    end 
end 

這就是我用來一次爲我的網頁創建所有權限。

相關問題