これをテストするためにホームページ用に生成されたコントローラだけで新しいrailsプロジェクトを作成しました。Deviseがsign_upエラーを別のページにリダイレクトするのはなぜですか?
私が考案したモデルはUser
なので、サインアップページはhttp://localhost:3000/users/sign_up
です。
パスワードを入力せずにフォームを送信するなどのエラーが発生した場合は、http://localhost:3000/users
にリダイレクトされます。
http://localhost:3000/users/sign_up
エラーを間違えた後にはどうすればいいですか?
私はthis questionを読んでおり、the only answerはコントローラーにredirect_to :back
を使用していることを示しています。
問題はコントローラーをオーバーライドしていないことです。オーバーライドが解決する唯一の方法である場合、その方法を説明してください。
これは私のroutes.rb
Rails.application.routes.draw do
root to: "home#index"
get 'home/index'
devise_for :users
end
HereがDevise::RegistrationsController
のソースコードです。私が必要とするものを達成するために、new
またはcreate
をどのように上書きする必要がありますか?
それはレールのデフォルトの動作です。何らかのエラーが発生すると、再びフォームがレンダリングされます。フォームのすべての値は同じままです。リダイレクトバックを使用してエラーが発生すると、新しいフォームが作成されます。フォームのすべての値は破棄されます – Vishal
フォームを再度レンダリングしますが、それは正しいです。問題は '/ users/sign_up'から'/users'へのurlの変更です。 – Wit
アプリ内で開発するルート(およびコントローラ/アクション)を投稿できますか? – BigJ