📑

f.collection_check_boxesについて

2024/03/16に公開

内容

PF作成の時にメンターさんに教えて頂いたことをいつもで引き出せるように書いておこうと思います。
f.collection_check_boxesの使い方を間違えてた時の話です。

form.html.erb

<%= form_with model: user, method: :patch, local: true do |f| %>
    :
    :
  <%= f.collection_check_boxes :tag_ids, Tag.all, :id, :name do |b| %>
    <div>
      <%= b.label { b.check_box + b.text } %>
    </div>
  <% end %>
    :
    :
<% end %>

第1引数: form_forブロック配下では省略可とのこと
第2引数: tag_ids → "user"に"tag"の関連付けをする事で使用でき、関連付けたいタグを選択できるようになる。そして、選択されたタグの ID は tag_ids の配列として送信される。
第3引数: Tag.all → 元となるオブジェクト配列
第4引数: :id   → valueとして送られる値
第5引数: :name  → 表示される値

... do |b| %>
 <%= b.label { b.check_box + b.text } %>
<% end %>
省略可能。f.collection_check_boxesにはoptionは適用できても、classは適用できないみたいなので、適用させたい場合は、こっちに適用させる。

まとめ

必要な引数を用意できてなくてエラーがでてました。配列が絡んでくるエラーは苦手です。

Discussion