Генерация вложенных маршрутов в собственном генераторе - PullRequest
1 голос
/ 05 июня 2009

Я строю генератор в rails, который генерирует внешний интерфейс и контроллер администратора, а затем добавляет маршруты в файл маршрутов. Я могу заставить интерфейс работать с этим:

m.route_resources controller_file_name

но я не могу понять, как сделать то же самое для вложенного маршрута администратора (admin / controller_file_name). Кто-нибудь знает, как генерировать эти маршруты?

1 Ответ

3 голосов
/ 09 июня 2009

Глядя на код для route_resources, не похоже, что он сделает что-то, кроме болотного стандарта map.resources :foos.

Вместо этого давайте напишем наш собственный метод для решения этой проблемы, основанный на оригинальном

def route_namespaced_resources(namespace, *resources)
  resource_list = resources.map { |r| r.to_sym.inspect }.join(', ')
  sentinel = 'ActionController::Routing::Routes.draw do |map|'
  logger.route "#{namespace}.resources #{resource_list}"
  unless options[:pretend]
    gsub_file 'config/routes.rb', /(#{Regexp.escape(sentinel)})/mi do |match|
      "#{match}\n  map.namespace(:#{namespace}) do |#{namespace}|\n     #{namespace}.resources #{resource_list}\n  end\n"
    end
  end
end

Мы можем начать это как локальный метод в вашем генераторе, который теперь можно вызывать с помощью:

m.route_namespaced_resources :admin, controller_file_name
...