2012-06-13 7 views
5

Ich schreibe eine einbaufähige Rails 3-Engine und kombiniere die Routen meiner Engine mit denen der Host-App. Die Routen der Host-App haben jedoch Vorrang vor den Routen meiner Suchmaschine. Gibt es eine Möglichkeit, die Routen der Host-App (speziell die Root-Route) zu überschreiben?Die Root-Route der Host-App von Mountable Engine überschreiben

Hier Routen meine Motors in my_enging/config/routes.rb:

MyEngine::Engine.routes.draw do 
root :to => "home#index" 
end 

# Mount engine routes to host application 
Rails.application.routes.draw do 
    mount MyEngine::Engine, :at => "/" 
end 

Und hier die Ergebnisse der rake routes, mit der Wurzel sitzt der Wirt an der Spitze:

root/welcome#index 
my_engine/MyEngine::Engine 
root/home#index 

Spree ein Juwel ist, das dies tut, aber Ich konnte nicht finden, wie sie dies umsetzen.

Antwort

0

Menschen neigen eher dazu, eine gegenteilige Sache zu machen, deshalb kann ich nicht herausfinden, warum Sie das brauchen, weil man erwarten kann, Motorrouten zu überschreiben. Eigentlich habe ich keine Antwort, wie man Maschine erzwingt, um Anwendungswege zu überschreiben, aber:

Spree fügt Strecken dynamisch irgendwie über eval_block hinzu, nehme ich an.

Sie können einfach root to: sowie alle unerwünschten Routen in Ihrer Anwendung überspringen, und dann werden Engine-Routen angezeigt. Behalte sie nicht beide. Ich sehe nicht root in Ihrer Anwendung angegeben, aber Ich habe gerade ein Experiment ausgeführt und alles funktioniert!

W12::Engine.routes.draw do 
    root to: 'details#index' 
end 

MyCarsApplication.routes.draw do 
    mount Common::Engine => "/" 
end 

Und es gibt nur einen Weg:

root/details#index 

This post about creating not isolated engines auch helfen könnte.

Wenn Sie die genaue Antwort gefunden haben, bitte posten Sie es.

Verwandte Themen