【问题标题】:List of Controller Routes in Rails 3?Rails 3 中的控制器路由列表?
【发布时间】:2011-04-29 15:40:47
【问题描述】:

我正在尝试做的事情:

我创建了一些控制器,例如:

  • 首页
  • 关于
  • 图库
  • 联系方式

现在我想自动创建一个导航。那么有没有办法以编程方式获取控制器/操作列表来构建此导航?

我不想每次添加控制器时都修复导航。

【问题讨论】:

  • 你发现了吗?我也需要返回一个包含所有控制器名称的数组

标签: ruby-on-rails-3 controller navigation routes


【解决方案1】:

这是一个单行程序,可根据您的路由文件为您提供所有控制器。我发现我有一个 nil 值,所以我添加了救援,然后拒绝了任何被救援的空值。 uniq 删除所有重复项。

Rails.application.routes.routes.collect { |r| r.defaults[:controller] rescue '' }.reject! { |c| c.empty? }.uniq 

添加了一个标题,使它们更适合您的导航。

Rails.application.routes.routes.collect { |r| r.defaults[:controller].titlecase rescue '' }.reject! { |c| c.empty? }.uniq 

这仅适用于管理命名空间中的那些。

Rails.application.routes.routes.collect { |r| r.defaults[:controller].titlecase rescue '' }.reject { |c| c.empty? }.uniq.reject { |n| !n.include?('Admin/')  }.map { |i| i.gsub('Admin/', '') }.sort

【讨论】:

    【解决方案2】:

    你可以试试这样的:

    HomeController.action_methods.each do |action|
      url_for(:action => action)
    end
    

    【讨论】:

    • 你把这个放在哪里?在 routes.rb 中?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-07
    • 1970-01-01
    • 1970-01-01
    • 2011-09-05
    • 2012-10-01
    • 2012-03-07
    • 1970-01-01
    相关资源
    最近更新 更多