画面上で、画面にひもづく親テーブルに対する子テーブルのリストを動的に編集して追加するgem, nested_form_fieldsを使用しています。
仮に親のモデルをA
子のモデルをB
とした場合に、子のモデルの項目item
には、画面上で入力した値を編集して更新する必要があります。編集済みの値を edit_item
として、子テーブルのモデルに attr_accessor で指定して下記のようなイメージで表示や更新を行おうとしていました。
【画面表示時】
DBから取得
=> ① edit_item
= 編集用の処理(item
)
=> ② edit_item
を画面表示
【更新時】
画面より更新
=> ③ item
= 編集用の処理(edit_item
)
=> ④ item
をDBに更新
しかし、画面上で子要素を新たに追加した場合、 新たに追加された要素のみ④が適用されません。
④ の処理は親のモデルのbefore_save
で呼んでいるのですが、その時の親モデルから参照している子のモデルには画面上で新たに追加された要素が反映されていないためです。
こうしたケースではどのように処理を書いたら良いか教えていただきたく。
コントローラーから requestParam をバケツリレーで渡して子のモデルに反映するのでしょうか。
当方、他の言語での開発経験はあるのですが、Railsは初心者のため理解不足な点はあるかと思いますが何卒よろしくお願い致します。
あなたの回答
tips
プレビュー