1

次のコントローラーを公開するRailsエンジンがあります。

class ActsAsAssets::AssetsController < ApplicationController
..........

メインアプリケーションは、deviseをApplicationControllerに使用します。メインアプリケーションから、通常は次のようにエンジンコントローラーを拡張するために使用します。

class MainApplicationController < ActsAsAssets::AssetsController
.......

私がアスペクトしていたのは、MainApplicationControllerがエンジンを介してメインアプリケーションApplicationControllerを拡張していたことです。エンジンにはApplicationControllerがないため、ActsAsAssets :: AssetsController <ApplicationControllerが、エンジンを使用するrailsアプリのApplicationControllerを実際に拡張することを期待していたことに注意してください。

私は間違っているようです。

なにか提案を?基本的に私が達成したいのは、メインアプリのコントローラーがRailsエンジンコントローラーを拡張し、メインのApplicationControllerを拡張するコントローラーがエンジン内にないことです。

希望は明らかです。

4

1 に答える 1

3

宣言を次のように変更します。

class ActsAsAssets::AssetsController < ::ApplicationController

ApplicationControllerこれは、メイン アプリケーションから非名前空間を拡張するようコントローラーに指示します。

于 2012-09-04T18:06:19.337 に答える