簡體   English   中英

從Mountable Engine覆蓋主機應用程序的根路由

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM