如何在我的 Rails 应用程序中获取所有路线?

Posted

技术标签:

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

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

有可能吗?怎么样?

【问题讨论】:

你在哪里需要这个输出? 对于 Rails 3:Rails.application.routes.routes.to_a(参见my original answer) 【参考方案1】:

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

【讨论】:

对于 Rails 4,它现在位于 railties gem 中 谢谢@Shadwell - 你知道我如何访问它吗? 非常非常古老的答案。你可能在这里有一些运气:github.com/rails/rails/blob/master/railties/lib/rails/commands/…【参考方案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

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

【讨论】:

以上是关于如何在我的 Rails 应用程序中获取所有路线?的主要内容,如果未能解决你的问题,请参考以下文章

Rails 6 如何使用 Octokit 从 Github 文件获取中处理 404

Rails 最佳 API 设计,用于获取与某个用户关联的所有记录

在 iPhone 中获取行车路线

如何在春季显示所有可用路线?

如何从控制器路由 Rails 4 获得不同的和多个视图

如何在我的 Rails 应用程序中与亚马逊产品广告 API 交互?