【发布时间】:2011-04-29 15:40:47
【问题描述】:
我正在尝试做的事情:
我创建了一些控制器,例如:
- 首页
- 关于
- 图库
- 联系方式
现在我想自动创建一个导航。那么有没有办法以编程方式获取控制器/操作列表来构建此导航?
我不想每次添加控制器时都修复导航。
【问题讨论】:
-
你发现了吗?我也需要返回一个包含所有控制器名称的数组
标签: ruby-on-rails-3 controller navigation routes
我正在尝试做的事情:
我创建了一些控制器,例如:
现在我想自动创建一个导航。那么有没有办法以编程方式获取控制器/操作列表来构建此导航?
我不想每次添加控制器时都修复导航。
【问题讨论】:
标签: ruby-on-rails-3 controller navigation routes
这是一个单行程序,可根据您的路由文件为您提供所有控制器。我发现我有一个 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
【讨论】:
你可以试试这样的:
HomeController.action_methods.each do |action|
url_for(:action => action)
end
【讨论】: