重複の可能性:
保存せずにRails update_attributes?
基本的に、ActiveRecordの変更を保留にしたまま、ActiveRecordの「update_attributes」を実行したいと思います。これを達成する方法はありますか?なぜ私がこれを欲しがるのか疑問に思っているなら、読んでください。
静的な部分(互いに独立したテキストフィールド)、選択のセット(エントリが入力されると大きくなる)、および依存するオブジェクトのグループに対する選択の影響を示すセクションの3つの部分で構成されるフォームがあります。選択を変更するには、効果を判断するためにサーバーへのラウンドトリップが必要であり、一部の選択は将来の選択の選択に影響します。選択は、基本モデルからのhas_manyアソシエーションとしてモデル化されます。例([]エントリはHTML-SELECTを指定することに注意してください)
Include [section]
Exclude [subsection]
Exclude [subsection]
Include [section]
Exclude [subsection]
...
フォームを典型的なネストされた属性フォームとして設定しました。選択が変更された場合、通常のparamsハッシュ(例:params [:basemodel] [Associated_models_attributes] [0] [:field_name])を取得するように、AJAXを使用してフィールドをポストバックします。これを未保存のActiveRecordに入れて、元のページの一部を生成するためにすでに使用しているパーシャルを使用してJS応答を生成できるようにします(これにはjs.erbファイルを使用しています)。Basemodel.new(params [:basemodel])を使用すると、エラーが発生します
"ActiveRecord::RecordNotFound (Couldn't find AssociatedModel with ID=1 for Basemodel with ID=)
これは、既存の関連付けられたレコード(現在のレコードに空白以外のIDがある)のIDが、「新しい」呼び出しから生成される空白のIDと一致しないために発生しています(私は思います)。
私は本当に厄介なことをして、ActiveRecordのように見えるものを作成することができました(少なくとも私のパーシャルを満たすのに十分なものです)が、これは十分に一般的な問題であり、それに対する良い解決策があると考えなければなりません。