9

Engrave という Rails エンジンを構築しています。

次のようにエンジンを取り付けました。

# Routes.rb of the host app
mount Engrave::Engine => "/engrave", :as => "engrave_engine"

このエンジン内に、「PostsController」というコントローラーがあります。このコントローラーに移動して投稿を次のように表示すると、次の/engrave/posts/1エラーが発生します。

undefined local variable or method `new_user_session_path'

エンジンの PostsController は、次のように、アプリケーション コントローラーから継承しているエンジン コントローラーから継承しています。

module Engrave
  class PostsController < ApplicationController
  ...
end

class Engrave::ApplicationController < ApplicationController
end

new_user_session_path は、私が次のようにセットアップしたデバイスによって定義されています。

devise_for :users

new_user_session_path への呼び出しは、ホスト アプリlayouts/application.html.erbのテンプレート ファイルにあります。

このルート ヘルパーがこのコンテキストで利用できない理由がわかりません。私は何を間違っていますか?

4

3 に答える 3

9

使用する

main_app.new_user_session_path

それはうまくいくはずです

于 2012-05-28T15:01:37.730 に答える
0

この応答に基づいて、 application_helpers.rbで見つかったすべてのヘルパーをhelper "manager/application"コントローラー内に記述して含めます (「manager」がマウント可能なエンジンの現在の名前空間である場合。標準アプリケーションからこれを呼び出す場合は「application」を使用してください)。

于 2014-01-23T03:17:40.703 に答える