34
29

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

collection_check_boxesで複数のカラムを表示する方法

Last updated at Posted at 2018-01-13

collection_check_boxesを使用する機会があったので備忘録として残しておこうと思います。

##やったこと

  • collection_check_boxesで複数のカラムを表示する

##各言語のバージョン・開発環境

  • ruby 2.4.1
  • Rails 5.1.4
  • haml 5.0.3
  • Bootstrap 4.0.0.beta

##前提
以下の様な関連があります。
スクリーンショット 2018-01-13 16.10.23.png

##画面の遷移イメージ
グループの一覧ページがあります。
スクリーンショット 2018-01-13 16.50.01.png
「所属ユーザー一覧ボタン」がクリックされると「所属ユーザー一覧」へ遷移します。
スクリーンショット 2018-01-13 16.50.26.png
「ユーザー追加/除外ボタン」がクリックされると「メンバー登録」へ遷移します。
※書いててここのボタンの表示はユーザーよりもメンバーの方が適切だなと思いましたが、修正が面倒なので進みます。
スクリーンショット 2018-01-13 16.50.57.png

メンバー登録の周りのソースコード

members_controller
def index
  @group = Group.find(params[:group_id])
  @users = User.all
end
index.html.haml
= form_with(model: @group, url: admin_group_members_path, group_id: @group.id, local: true) do |form|
  
  #第3引数に指定したものが、checkboxのvalue値に、第4引数に指定したものが text値になる。
  = form.collection_check_boxes(:user_ids, @users, :id, :name) do |user|
      = user.label { user.check_box + user.text }

= form.submit class: "btn btn-primary float-right"

##collection_check_boxesで複数のカラムを表示する
メンバー登録において、ユーザーのアカウント名(name) だけではなく、メールアドレス(email)も表示したい時はcollection_check_boxesの箇所を以下の様に変更すれば、メールアドレス表示させることができます。

= form.collection_check_boxes(:user_ids, @users, :id, :name) do |user|
      = user.label do
        = user.object.name
        = user.object.email
        = user.check_box

これにBootstrapを当てていい感じのテーブルにすると以下の様なコードになります。

  = form_with(model: @group, url: admin_group_members_path, group_id: @group.id, local: true) do |form|
    %table#group_list.table.table-striped
      %thead
        %tr
          %th ユーザ名
          %th メールアドレス
          %th 追加/除外
      %tbody
        = form.collection_check_boxes :user_ids, User.all, :id, :name do |user|
          = user.label do
            %tr
              %td= user.object.name
              %td= user.object.email
              %td= user.check_box

修正後のイメージです。
スクリーンショット 2018-01-13 17.32.59.png

参考にさせていただきました。
collection_check_boxesメソッドの構造確認

34
29
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
34
29

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?