collection_check_boxesを使ったときにconfirmationのページをどう実装するか
かずまです。
今回collection_check_boxesを使って、formを作っていたときにハマったのでメモします。 ただ、この実装は本当に正しいかは微妙です。参考までにです。
ページの流れ
new -> confirmation -> complete
となっていて、ModelController内にそれぞれのメソッドを生やしています。
blog.kazumalab.com 前回の続きで、has_manyの関係のチェックボックスは簡単に扱えるというメモをのこしました。
collection_check_boxes
複数のチェックボックスを簡単に実装してくれるHelperです。
= f.collection_check_boxes :child_model_ids, ChildModel.all, :id, :name
こんな感じで実装したとします。 もちろん確認ページではチェックボックスは出さないのでhiddenにするのですが、 ただhiddenにするだけはダメでした。
フォームのパラメータとしては
child_model_ids["", "1", "2"]
この形で欲しいわけです。 それに合わせて、
= f.hidden_field :child_model_ids, multiple: true, value: nil - @model.child_models.each do |child_model| = f.hidden_field :child_model_ids, multiple: true, value: child_model.id
こう書いてあげればできました。 multiple: trueを書かないと配列にしてくれないのでつけます。 これでcollection_check_boxesのhiddenを実装ができたと思います。
追記
こんな感じ! なにか間違いがあればご指摘ください!