2010-10-23 6 views
1

То, что я пытаюсь сделать:Список маршрутов контроллера в Rails 3?

создать несколько контроллеров, например:

  • дома
  • О
  • Галерея
  • Контакт

Теперь я хочу для автоматической навигации. Итак, есть ли способ программно получить список контроллеров/действий для создания этой навигации?

Я не хочу исправлять навигацию каждый раз, когда добавляю контроллер.

+0

Вы поняли это из? Мне нужно также вернуть массив всех имен контроллеров. – stephenmurdoch

ответ

1

Вы можете попробовать что-то вроде этого:

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

Куда вы помещаете это? в маршрутах.rb? –

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 

Это один для тех, кто находится в пространстве имен admin.

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 
Смежные вопросы