el_*_*ick 20 ruby routes ruby-on-rails
我可以在rails应用程序中获取所有路由吗?我需要一个输出rake routes,并将结果放在一个数组中.
可能吗?怎么样?
Sha*_*ell 17
你可以看一下rails从rake任务中吐出那些路径的方式.它/gems/rails/2.3.x/lib/tasks/routes.rake适用于Rails 2.似乎基本上ActionController::Routing::Routes.routes是在一般情况下进行,然后询问它.
那么,无论你需要什么,你都可以:
routes = `rake routes`.split("\n")
Run Code Online (Sandbox Code Playgroud)
甚至:
routes = `rake routes`.split("\n").map{ |r| r.gsub(', ', ',').split(' ') }
Run Code Online (Sandbox Code Playgroud)
小智 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
Run Code Online (Sandbox Code Playgroud)
这就是我以前用于为我的网页创建所有权限的原因.