【问题标题】:how get all routes in my rails application?如何在我的 Rails 应用程序中获取所有路线?
【发布时间】:2011-04-10 00:13:53
【问题描述】:

我可以在我的 rails 应用程序中获取所有路线吗?我需要像rake routes 这样的输出并将结果放入一个数组中。

有可能吗?怎么样?

【问题讨论】:

  • 你在哪里需要这个输出?
  • 对于 Rails 3:Rails.application.routes.routes.to_a(参见my original answer

标签: ruby-on-rails ruby routes


【解决方案1】:

您可以查看 rails 从 rake 任务中吐出这些路线的方式。它在 Rails 2 的 /gems/rails/2.3.x/lib/tasks/routes.rake 中。在一般情况下似乎基本上是在做 ActionController::Routing::Routes.routes 然后审问。

【讨论】:

【解决方案2】:

好吧,不管你在哪里需要它,你都可以这样做:

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

甚至:

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

【讨论】:

    【解决方案3】:

    为了分散实现这一点的头痛,我根据@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
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-31
      • 2012-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-04
      • 1970-01-01
      • 2018-02-13
      相关资源
      最近更新 更多