と の 2 つのモデルがUser
ありWant
ます。A User
has_many:
Want
s.
Want
モデルには 以外user_id
に 1 つのプロパティがありますname
。
のedit
アクション ビューにUsersController
は 2 つのフォームがあります。UsersController
1 つはupdate メソッドにPOST (PUT) してユーザーを更新し、もう 1 つはアクションに POST してユーザーのアカウントにWantsController
create
新しいものを追加します。Want
これは問題なく、動作していますが...
のcreate
アクションで、のアクションWantsController
にリダイレクトして、成功または検証エラーを表示します。edit
UsersController
Want
問題は、編集アクションがフォームの新しい @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 を追加できるように、まったく新しいページを作成するのは少しやり過ぎのようです!
ありがとう。