2012-06-13 2 views
5

Я пишу монтируемый Rails 3 Engine, и я совмещаю маршруты моего двигателя с хост-приложением. Тем не менее, маршруты хост-приложения имеют приоритет над маршрутами моего мотора. Есть ли способ переопределить маршруты хост-приложения (в частности, корневой маршрут)?Переопределение корневого маршрута хост-приложения из монтируемого двигателя

Вот маршруты мой двигатель в 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 

И вот результаты rake routes, с корнем хозяина сидит на вершине:

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

Spree является один драгоценный камень, который делает это, но Я не смог найти, как они реализуются.

ответ

0

Люди с большей вероятностью будут делать что-то противоположное, поэтому я не могу понять, зачем вам это нужно, потому что ожидается, что можно переопределить маршруты двигателей. На самом деле у меня нет ответа, как заставить двигатель переопределять маршруты приложений, но:

Spree добавляет маршруты динамически как-то через eval_block, я полагаю.

Вы можете просто пропустить root to:, а также все нежелательные маршруты в вашем приложении, а затем появятся маршруты Маршрутов. Не держите их обоих. Я не вижу корня, указанного в вашем приложении, но Я только что провел эксперимент, и все работает!

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

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

И есть только один путь:

root/details#index 

This post about creating not isolated engines также может помочь.

Если вы нашли точный ответ, разместите его.