メインアプリのアプリケーションコントローラーにbefore_filterフックがあり、次のような動作をします:(フラッシュにリンクを配置するだけでなく、メッセージが表示されますが、質問には関係ありません。ルートにアクセスするだけです。方法)
class ApplicationController < ActionController::Base
before_filter :set_link
def set_link
flash[:notice] = items_path
end
end
これはアプリでは正常に機能しますが、作成したエンジンのコントローラーに入ると、例外が発生します
No route matches {:controller=>"items", :action=>"index"}
エンジン内では、プレフィックスが付いていない限り、ルートヘルパーはエンジン用であることを理解していますmain_app
したがって、アプリケーションコントローラのメソッドを次のように変更します。
def set_link
flash[:notice] = main_app.items_path
end
例外を取り除きますが、私は本当にそれをする必要はありません。エンジンにmain_appルートを認識させるための別の解決策はありますか?
編集:
これは、アプリケーションレイアウトがパスヘルパーを呼び出す場合にも発生します。したがって、エンジンがmain_appのレイアウトに統合されるように設計されている場合、この問題はそこでも発生します。