2009-06-05 5 views
1

Ich baue einen Generator in Schienen, die einen Front-End-und Admin-Controller generiert und fügt dann die Routen der Route-Datei. Ich kann das Frontend mit dieser Arbeit erhalten:Generieren verschachtelter Routen in einem benutzerdefinierten Generator

m.route_resources controller_file_name 

aber ich kann nicht herausfinden, wie man das gleiche für die verschachtelte Admin-Route zu tun (admin/controller_file_name). Wer weiß, wie man diese Routen generiert?

Antwort

3

Betrachtet man den Code für route_resources, sieht es nicht so aus, als würde es irgendwas über einen Moor-Standard hinaus tun map.resources :foos.

Stattdessen lassen Sie sich unsere eigene Methode schreibt mit diesem Thema zu befassen, basierend auf dem ursprünglichen

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 

Wir können dies als lokale Methode in Ihrem Generator starten, die Sie mit jetzt anrufen:

m.route_namespaced_resources :admin, controller_file_name