6

マウント可能なRails3エンジンを作成しており、エンジンのルートとホストアプリのルートを組み合わせています。ただし、ホストアプリのルートは、私のエンジンのルートよりも優先されます。ホストアプリのルート(具体的にはルートルート)を上書きする方法はありますか?

これが私のエンジンのルートです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はこれを行う1つの宝石ですが、私はそれらがこれをどのように実装しているかを見つけることができませんでした。

4

1 に答える 1

0

人々は反対のことをする可能性が高いので、なぜこれが必要なのかわかりません.エンジンルートをオーバーライドする機能が期待されているからです. 実際には、エンジンにアプリケーション ルートを強制的に上書きさせる方法はわかりませんが、次のようになります。

Spree はどうにかしてeval_blockを介してルートを動的に追加していると思います。

root to:アプリケーション内のすべての不要なルートをスキップするだけで、エンジン ルートが表示されます。両方を保管しないでください。アプリケーションでルートが指定されていませんが、実験を実行したところ、すべてが機能しています!

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

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

そして、ルートは 1 つだけです。

root / details#index

分離されていないエンジンの作成に関するこの投稿も役立つ場合があります。

正確な答えが見つかった場合は、投稿してください。

于 2015-08-20T10:13:43.443 に答える