0

エンジンを作りたいです。私のエンジンはマウント可能かもしれませんし、そうでないかもしれません。それは重要ではありません。ただし、エンジンのビューをレンダリングするために、Deviseのようなメインのアプリケーションレイアウトを使用したいと思います。これもとても簡単です。

だが!アプリケーションのレイアウトとRailsエンジンのビューテンプレートのレンダリング時に、レイアウトでURLヘルパーを使用しているために例外が発生しましたが、このURLヘルパーはmain_appにあります。したがって、レイアウトファイル内のすべてのURLヘルパーの前にmain_appコンテキストを記述できることはわかっていますが、それは実行したくありません。Deviseはこのように機能しています。たとえば、セッション/新しいビューを表示する場合は、アプリケーションレイアウトにmain_app.pages_urlを記述する必要はありません。しかし、私は彼らがそれをどのように行うのかわかりません。私はそれを知りたいのですが、ドキュメントを読んだコードを読みましたが、何も見つかりませんでした。誰かがそれをどのように行うか教えてください。Deviseのようなmain_appurlヘルパーを処理するエンジンを作成するにはどうすればよいですか。ありがとうございました。

4

1 に答える 1

1

エンジンの種類によって異なります。エンジンに行が含まれている場合、 (およびヘルパー全般) がアプリケーションとエンジンの間で共有されないことを意味しますisolate_namespace SomeModuleurl_helpersしたがって、などのツールに頼る必要がありますmain_app

とはいえ、Devise がレイアウトを共有するために行うことは、単純に を呼び出さないことだけですisolate_namespace。これは、エンジンが Rails 2.2 で導入されて以来、どのように機能するかです。このisolate_namespace機能は、より強力なデカップリングを希望する人のために Rails 3.1 に追加されました。

于 2012-10-26T10:09:31.627 に答える