2010-09-08 80 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 

这就是我用来一次为我的网页创建所有权限。

相关问题