Postingをモデル例として、Postに2つの属性があり、どちらも検証があるとしましょう。投稿を編集するとき、2つの属性を変更すると、1つは検証に失敗し、ページが再読み込みされます。ページがリロードされると、以前に保存されたポストの属性のバージョンがフォームに表示され、今入力した属性は表示されませんが、今入力したものはパラメータに表示されます。Railsで更新時に保持するパラメータを取得する
ポストインスタンス変数の宣言は次のようになりますので、これは典型的な作成アクションで処理される:
@post = Post.new(params[:post])
をただし、更新アクションで、ポストのインスタンス変数は、次のようになります。
@post = Post.find(params[:id])
したがって、フォームに入力された変更は、パラメータに渡され、フォーム上で再レンダリングされません。私はこれを正しく記述していますか?そうであれば、検証が失敗したときにフォームでレンダリングされる変更を得る方法がありますか?あるいは、検証に失敗しない変更だけでしょうか?
あなたのフォームはどのように見えますか?残りの 'update'アクションは何ですか? Postインスタンスを残りのパラメータで更新する '@ post.update_attributes(params [:post])'が必要です。 – coreyward