我可以在rails应用程序中获取所有路由吗?我需要一个像rake routes
这样的输出,并将结果放在一个数组中。
有可能吗?如何?
答案 0 :(得分:17)
你可以看一下rails从rake任务中吐出这些路线的方式。它位于/gems/rails/2.3.x/lib/tasks/routes.rake
中,对于Rails 2.在一般情况下似乎基本上都是ActionController::Routing::Routes.routes
,然后再查询。
答案 1 :(得分:10)
好吧,无论你需要什么,你都可以:
routes = `rake routes`.split("\n")
甚至:
routes = `rake routes`.split("\n").map{ |r| r.gsub(', ', ',').split(' ') }
答案 2 :(得分:6)
为了传播实现这一目标的头痛,我是基于@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
这是我以前用于为我的网页立即创建所有权限的内容。