fluid_27’s blog

駆け出しエンジニアが頭を整理するために綴るブログ

check_boxやcheck_box_tagの使い方

の違いについて。

 

 

使い分け

  • check_box 関連するモデルがある時
  • f.check_box 関連するモデルがある時、かつform_forまたはform_withの中で使う際
  • check_box_tag 関連するモデルがない時
  • f.check_box_tag 関連するモデルがない時、かつform_forまたはform_withの中で使う際
  • collection_check_boxes すでにあるモデルからチェックボックスを自動生成。多対多のリレーションのモデルを表現する時に便利

 

check_box

構文

check_box(オブジェクト名, メソッド名[, オプション, checked_value = "1", unchecked_value = "0"])

  • 第1引数(オブジェクト名)・・・データを保存したいモデル名
  • 第2引数(プロパティ名)・・・データを保存したいカラム名
  • 第3引数(オプション)・・・クラス名など
  • 第4引数、第5引数・・・チェックが入っている際のvalue値。デフォルトはチェックが入っている→1 チェックが入っていない→0 だが、trueとfalseにすることもできる。

 

例文

check_box :user, :post, {class: "check_box"}, true, false

 

 

f.check_box

構文

基本的にcheck_boxと同じ。第1引数が省略できる。

 

例文

f.check_box :post, {class: "check_box"}, true, false

 

 

check_box_tag

構文

check_box_tag(要素名 [, value値, checked = false, オプション or HTML属性 or イベント属性])

  • 第1引数(要素名)・・・データを保存したいモデル名
  • 第2引数(value値)・・・チェックされた時に格納する値
  • 第3引数(checked = false)・・・デフォルトの状態が「チェックが入っていない状態」にするかどうか
  • 第4引数・・・オプションとしてクラス名を付与できたり、イベント属性としてonclickなどを指定できたり

例文

check_box_tag(name, value = "1", checked = false, options = {})

 

 

collection_check_boxes

多対多のモデル設計をしている際などに便利。

例えば、中間テーブルを介してつながっているgroupテーブルとuserテーブルがある。

オブジェクトにgroupをコレクションにUser.allなどを指定すれば全userを選択肢としてチェックボックス を作成し、選択されたものをgroupモデルとして送信できる。

 

構文

collection_check_boxes(オブジェクト名, メソッド名, コレクション名[, オプション, checked_value = "1", unchecked_value = "0"])

  • 第1引数(オブジェクト名)・・・データを保存したいモデル名
  • 第2引数(メソッド名)・・・データを保存したいカラム名
  • 第3引数(コレクション名)・・・チェックボックスの選択肢となる配列
  • 第4引数(オプション)・・・デフォルトでのチェックの有無を指定するcheckedなどを付与できる
  • 第5引数・・・チェックが入った時のvalue
  • 第6引数・・・チェックボックスと一緒に作成されるテキスト

 

例文

collection_check_boxes(:group, :ids, User.all, :id, :name)

 

 

f.collection_check_boxes

構文

基本的にcollection_check_boxesと同じ。第1引数が省略できる。

 

例文

collection_check_boxes(:ids, User.all, :id, :name)

 

 

 

参考サイト

https://railsdoc.com/form

https://qiita.com/tanutanu/items/b86c4adc26ae464c71fd

https://qiita.com/hibriiiiidge/items/f993c46ee84b3eb124da

https://qiita.com/sho012b/items/3a595fde14516081dff5