[英]Override host app's root route from Mountable Engine
我正在編寫一個可安裝的Rails 3引擎,我將我的引擎路由與主機應用程序相結合。 但是,主機應用程序的路由優先於我的引擎路由。 有沒有辦法可以覆蓋主機應用程序的路由(特別是根路由)?
這是我的引擎在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是這樣做的一個寶石,但我無法找到他們如何實現這一點。
人們更傾向於做相反的事情,所以我無法弄清楚你為什么需要這個,因為應該能夠覆蓋引擎路線。 實際上我沒有回答如何強制引擎覆蓋應用程序路由,但是:
我猜想,Spree會以某種方式通過eval_block動態添加路由。
您可以直接跳過root to:
以及應用程序中的所有不需要的路由,然后將出現Engine路由。 不要兩者兼顧。 我沒有在你的應用程序中看到root指定,但我只是運行一個實驗,一切正常!
W12::Engine.routes.draw do
root to: 'details#index'
end
MyCarsApplication.routes.draw do
mount Common::Engine => "/"
end
而且只有一條路線:
root / details#index
這篇關於創建非隔離引擎的帖子也可能有所幫助。
如果您找到了確切答案,請發布。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.