collection_check_boxesの作り方


hamlを使ってransackとcollection_check_boxesを使った検索機能を実装しました。
その際属性付けなどに苦労したので記事にします。

complex-search.haml
  = s.collection_check_boxes :status_in, @statuses, :first, :second do |b|
    .search-box-left
        = b.check_box
         = b.label  { b.text }

それぞれのコードを分解して説明

= b.check_box

= b.check_boxで以下のようなチェックボックスを画面上に表示

= b.label  { b.text }

チェックボックスの横にラベル化された文字を表示させる

この文字がどこから引っ張り出されているかというと・・

exhibits_controller.rb
@statuses = [["", "すべて"],["新品", "新品・未使用"],["未使用に近い"," 未使用に近い"],["目立った傷や汚れ無し","目立った傷や汚れ無し"],["やや傷や汚れあり","やや傷や汚れあり"],["傷や汚れあり","傷や汚れあり"],["全体的に状態が悪い","全体的に状態が悪い"]]

配列内の第二引数の文字列が実際に画面に表示される文字で第一引数がDB内の検索用に使う値

自分でcollection_check_boxesを作った際にラベルの付け方やクラス付けに苦労しました。
この記事もそんな方々の参考になれば幸いです。