Rails 3中的控制器路由列表?

时间:2010-10-23 17:59:06

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

我正在尝试做什么:

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

  • 主页
  • 关于
  • 联系

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

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

2 个答案:

答案 0 :(得分:1)

您可以尝试这样的事情:

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

答案 1 :(得分:0)

这是一个单行班轮,根据您的路线文件为您提供所有控制器。我发现我有一个零值,所以我加入了救援,然后拒绝了那些获救的空人。 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