代码之家  ›  专栏  ›  技术社区  ›  el_quick

如何在rails应用程序中获取所有路由?

  •  20
  • el_quick  · 技术社区  · 14 年前

    rake routes

    有可能吗?怎样?

    3 回复  |  直到 10 年前
        1
  •  17
  •   Shadwell    14 年前

    您可以看看rails从rake任务中吐出这些路由的方式。它在里面 /gems/rails/2.3.x/lib/tasks/routes.rake ActionController::Routing::Routes.routes 在一般情况下,然后审问。

        2
  •  8
  •   jordinl    14 年前

    不管你在哪里需要它,你都可以:

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

    甚至:

    routes = `rake routes`.split("\n").map{ |r| r.gsub(', ', ',').split(' ') }
    
        3
  •  6
  •   netrevisanto    11 年前

    为了缓解头痛,我根据@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
    

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