0

継承された registrations_controller で定義することにより、after_sign_up_path_for(resource) を呼び出します。

class RegistrationsController < Devise::RegistrationsController

  protected

  def after_sign_up_path_for(resource)
    new_user_profile_path(resource)
  end

end

ルートをカスタマイズしなければ、このリダイレクトは正常に機能します。ただし、そうすると機能しなくなります。私のルートファイルには次のものがあります:

devise_for :users, skip: [:sessions], controllers: { registrations: "registrations" }

devise_scope :user do
  get 'signin' => 'devise/sessions#new', as: :new_user_session
  post 'signin' => 'devise/sessions#create', as: :user_session
  delete 'signout' => 'devise/sessions#destroy', as: :destroy_user_session
  get 'signup' => 'devise/registrations#new', as: :new_user_registration
  post 'signup' => 'devise/registrations#create', as: :user_registration
  root to: 'pages#home'
end

具体的には、post 'signup' => 'devise/registrations#create', as::user_registration 行が混乱を招きます。それがない場合は、正常に動作します。ただし、それが存在しない場合、検証エラーが原因で登録が失敗すると、URL はデフォルトで /signup ではなく /users になり、これは望ましくない動作です。

これが私が間違っていることなのか、それともdeviseにバグがあるのか​​ 誰にも分かりますか?

4

2 に答える 2

1

カスタム ルートの問題は、Devise コントローラーを参照していることです。

post 'signup' => 'devise/registrations#create', as: :user_registration

それは明らかにうまくいきません。代わりに独自のコントローラーをポイントします。

post 'signup' => 'registrations#create', as: :user_registration
于 2012-10-26T10:28:05.953 に答える
0

提供されたコードを簡単に見てみると、必要なルートは new_user_profile_path ではないと思います。おそらく user_profile_path が必要です。rake ルートを実行して、出力をここに貼り付けることができますか?

于 2012-10-24T20:58:25.093 に答える