2

OSXでDevise 2.0.0とRails 3.2.3を使用しています。

DeviseコントローラーとDeviseビューの両方を同時にオーバーライドすることは可能ですか?

にある独自のスコープビューで確認/新しいビューを正常にオーバーライドしていましたviews/users/confirmations/new.html.erb。スコープビューは正常に機能していました。

次に、after_confirmation_path_for メソッドをカスタマイズして独自のカスタム パスを返すためにDevise::ConfirmationsController、独自のコントローラーでをオーバーライドする必要があることがわかりました。AppConfirmationsController

class AppConfirmationsController < Devise::ConfirmationsController
  protected
    def after_confirmation_path_for(resource_name, resource)
      confirmed_app_custom_path
    end
end

カスタムコントローラーが使用されるようにルートを変更しました

devise_for :users, :controllers => {:confirmations => 'app_confirmations'}

新しいコントローラーは正常に動作していますが、スコープ ビューが認識されなくなりました。スコープ ビューをレンダリングする代わりに、デバイスのデフォルト ビューがレンダリングされています。カスタム コントローラーの使用を停止すると、スコープ ビューが再び機能し始めます。

カスタマー コントローラーの使用時に、スコープ ビューに影響を与える構成設定がいくつかありませんか?

4

1 に答える 1

5

スコープビューを使用していなかったので、これが機能するかどうかはわかりませんが、デフォルトのデバイス登録ビューとコントローラーをオーバーライドするときに同様の問題に遭遇しました.

私にとっては、ビューの親ディレクトリが新しいデバイスコントローラーと同じ名前であることを確認する必要があり、すべてが正常に機能しました。

つまりdevise_for :users, :controllers => { :registrations => "app_registrations" } 、私のカスタムコントローラーviews/app_registrations/new.html.erb

ビューを移動するとviews/users/app_confirmations/new.html.erb役立ちますか?

于 2012-07-13T04:02:51.537 に答える