2010-10-23 75 views
1

我想要做的事:Rails 3中的控制器路由列表?

我創造一些控制器,例如:

  • 首頁
  • 關於
  • 畫廊
  • 聯繫

現在我想自動創建導航。那麼有沒有辦法以編程方式獲取控制器/操作列表來構建此導航?

我不想每次添加控制器都修復導航。

+0

你知道了嗎?我需要返回一個所有控制器名稱的數組 – stephenmurdoch 2011-03-09 23:33:56

回答

1

你可以嘗試這樣的事情:

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

你把這個放在哪裏?在routes.rb中? – 2012-01-24 15:28:13

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