と の 2 つのモデルがUserありWantます。A User has_many: Wants.
Wantモデルには 以外user_idに 1 つのプロパティがありますname。
のeditアクション ビューにUsersControllerは 2 つのフォームがあります。UsersController1 つはupdate メソッドにPOST (PUT) してユーザーを更新し、もう 1 つはアクションに POST してユーザーのアカウントにWantsController create新しいものを追加します。Want
これは問題なく、動作していますが...
のcreateアクションで、のアクションWantsControllerにリダイレクトして、成功または検証エラーを表示します。editUsersControllerWant
問題は、編集アクションがフォームの新しい @want を作成し、検証エラーが要求で失われることです。
createでアクションを確認してくださいUsersController:
def create
@want = current_user.wants.build(params[:want])
if @want.save
flash[:success] = "WANT created!"
redirect_to user_account_path current_user.username
else
#flash[:validation] = @want.errors <- I NEED THESE ERRORS FOR MY VIEW
redirect_to user_account_path current_user.username
end
end
および の edit アクションUsersController:
def edit
@want = @user.wants.build
super
end
リダイレクトにより、インスタンス変数WantsControllerのエラーが失われます。@want(コメントに示されているように)にエラーを保存できますflashが、確かにこれは の完全な誤用ですflash。
私の質問は、アクション全体でこれらのエラーを永続化して、ビューでWant検証エラーをレンダリングできるようにするにはどうすればよいですか?
また、これはRails規約の検証とみなされますか? ユーザーが 1 つの文字列プロパティで 1 つの want を追加できるように、まったく新しいページを作成するのは少しやり過ぎのようです!
ありがとう。