こんにちは! フリーエンジニアの長瀬です。
みなさんcheckboxを使っていますか。
checkboxを使えば、設定した項目に該当するかユーザーに選択させることができて便利です。
この記事では、checkboxの使い方について
・checkboxとは
・チェックボックスを作成する方法
という基本的な内容から、
・チェックボックスに初期値を設定する方法
・利用規約のチェックボックスを作成する方法
・複数のチェックボックスを作成する方法
といった応用的な内容についても解説していきます。
この記事の目次
checkboxの基本
checkboxとは
チェックボックスはGUI(グラフィカルユーザーインターフェイス)の1つで、ユーザーにいくつかの項目の中から、任意に選択させるときに使います。
単一のものだけではなく、複数の項目について該当するか調べられるので、多くの情報を得られます。
ですが、それぞれの選択肢をチェックするかは任意であって、必ずしも選択しなければならないものではありませんので使用には注意してください。
一方、選択系のGUIにはチェックボックスの他にラジオボックスもあります。
ラジオボックスはいくつかの選択肢の中から、1つだけ選択するときに使います。
なので、必ず1つ選択させたいときにはラジオボックスを使い、選択するかしないはユーザーの意思によるという場面ではチェックボックスを使うようにしてください。
check_box_tagにて単一のチェックボックスを作成
check_box_tagメソッドを使って単一のチェックボックスを作成してみましょう。
まず、今回使うコントローラー(Check)、ビュー(example)を用意するために以下のコードをコマンドプロンプトに入力してください。
コントローラーとビューを作成
[実行結果]
これでコントローラーとビューを作成できました。
それでは、今回作成したapp/views/check/example.html.erbを開いて、既存のコードをすべて削除した後、以下のコードを入力してください。
[app/views/check/example.html.erbの入力する内容]
続いて、結果を確認するためにコマンドプロンプトにrails sと入力して、サーバーを起動してください。
そして、example.html.erbのルーティングを確認するためにapp/config/route.rbを開いてルーティングを確認してください。
[app/config/route.rbの内容]
となっていることが確認できます。
以下のURLにアクセスして、example.html.erbを開いてください。
http://localhost:3000/check/example
(補足) http://ocalhost:3000 の箇所は各自の開発環境により読み替えてください。
このように単一のチェックボックスが表示されるのを確認できます。
check_box_tagはlabel_tagと組み合わせて使うことが多いので、label_tagもセットで覚えてください。
checkboxにて単一のチェックボックスを作成する方法
続いてはcheckboxメソッドを使って、単一のチェックボックスを作成してみましょう。
まずは、必要なモデルやコントローラを作成するためにscaffoldを使います。
scaffoldがわからない人は以下の記事を参考にしてください。
それでは以下のコードをコマンドプロンプトに入力してください。
[scaffoldを使ってcheckboxを使うための準備をする]
[実行結果]
これで、準備が整いました。
今回モデルのカラムとして、checkboxだけは少し寂しいのでnameも作成してあります。
また、ingredients(材料)は後半に使用しますので、今は気にしないでください。
それでは、実際にcheckboxメソッドを使っていくので、今回作成されたapp/views/samurais/_form.html.erbを開いて、内容をすべて削除した後に以下のコードを入力してください。
[app/views/samurais/_form.html.erbに入力する内容]
朝が苦手であるの下のform.check_boxの部分でcheck_boxメソッドを使用しています。
check.boxでは0か1かの真偽値を返すので、ここでは:as=>booleanを設定してtrue/falseの論理値に変更してあります。
続いて、結果を確認するためにコマンドプロンプトにrails sと入力して、サーバーを起動してください。
そして、_form.html.erbのルーティングを確認するためにapp/config/route.rbを開いてルーティングを確認してください。
[app/config/route.rbの内容]
となっていることが確認できます。
なので、以下のURLにアクセスして、new.html.erbを開いてください。
http://localhost:3000/samurais/new
このように、check_boxメソッドを使って単一のチェックボックスを作成できました。
名前入力して、登録を押してみると実際にユーザー登録を確認できます。
check_box_tagとcheckboxの違い
今回使用したcheck_box_tagメソッドとcheckboxメソッドでは少し挙動が違います。
check_box_tagの〇〇_tag系のヘルパーはform_tagメソッドと組み合わせて使われます。
一方、語尾に_tagのついていないcheckbox方のヘルパーはform_forメソッドと組み合わせ使われます。
Railsにはform_tagとform_forがありますが、両者の主な違いは特定のモデルと関連付いているかどうかです。
form_forの使い方については、こちらの記事を参考にしてください。
また、Rails5.1からはform_tagとform_forはform_withメソッドに統合されました。form_withの引数で特定のモデルと結びつけるかどうかを設定できるため、form_tagとform_forの2つの挙動を使い分けられるようになりました。
checkboxの実用的な使い方
チェックボックスに初期値を設定する方法
それでは、今回使用したexample.html.erbのチェックボックスに初期値を設定してみましょう。
app/views/check/example.html.erbを開いて、既存のコードをすべて削除した後、以下のコードを入力してください。
[app/views/check/example.html.erbの入力する内容]
続いて、結果を確認するためにコマンドプロンプトにrails sと入力して、サーバーを起動してください。
そして、以下のURLにアクセスしてください。
http://localhost:3000/check/example
このように、チェックボックスに初期値を設定できました。
check_box_tagではname、value、初期値、オプションの順番に引数を取るのでvalueに1、続いて{:checked => "checked"} で初期値にチェックを入れています。
続いて、check_boxメソッドでは
app/views/samurais/_form.html.erb内の
の部分を
に変更すると、初期値が設定されます。
結果を確認するために以下のURLにアクセスしてください。
http://localhost:3000/samurais/new
checked:trueの引数で初期値を実装しています。
このようにcheck_boxメソッドにも同様に初期値を設定できました。
利用規約のチェックボックスを作成する方法
ここで、よくある利用規約に同意するかしないかをこれまで勉強したチェックボックスを使って実装してみましょう。
app/views/samurais/_form.html.erb内の
の部分を
に変更して
結果を確認するために以下のURLにアクセスしてください。
http://localhost:3000/samurais/new
ラベルの名前を変えただけですが、よくある利用規約のチェックポックスを作成できました。
また、同意しない場合は登録できないようにvalidationを設定しましょう。
validationについてはこの記事では説明しませんので、こちらの記事を参考にしてください。
複数のチェックボックスを作成する方法
これまでは単一のチェックボックスばかりを扱ってきましたが、複数のチェックボックスも作成してみましょう。
app/views/samurais/_form.html.erb内の
の部分を
に変更して
結果を確認するために以下のURLにアクセスしてください。
http://localhost:3000/samurais/new
このように複数の選択肢を作れました。
次に、実際に保存するためにapp/controllers/samurais_controller.rbの
の部分を
に変更してください。
ingredients:[]に変更することで配列の値をセットできます。
配列の値を保存する準備が整ったので、実際にデータを登録してみてください。
配列の値が保存されていることを確認できます。
次に関連付けされているモデルがある場合にcollection_check_boxesメソッドを使って複数の選択肢を作る方法を紹介します。
関連付けられたモデルの意味がよくわからないという方は以下の記事を参考にしてください。
説明で使用する環境をscaffoldを使って、構築していきますので、以下のコードをコマンドプロンプトに入力してください。
[scaffoldを使って必要なモデルを作成する]
今回はOwerモデルとBuildingモデルを作って、建物の所有者を複数選択できるよう実装していきます。
そのためowner_buidlingという中間テーブルを用意しています。
作成できたら、次は関連付けを行なっていきます。
app/models/owner.rbに以下のコードを入力してください。
[app/models/owner.rbに入力する内容]
また、app/models/buidling.rbには以下のコードを入力してください。
[app/models/buidling.rbに入力する内容]
これで、テーブル同士に多対多の関係を設定できました。
続いて、app/view/buildings/new.html.erbに複数のチッェクボックスを実装するために、collection_check_boxesメソッドを使っていきます。
app/view/buildings/_form.html.erbの内容をすべて削除し以下のコードを入力してください。
[app/view/buildings/_form.html.erbに入力する内容]
これで、複数のチェックボックスを表示できます。
次に実際に選択できる所有者を作成していきましょう。
rails s でサーバーを開いた後、以下のURLにアクセスしてください。
http://localhost:3000/owners
New Ownerから、何人か所有者を作成してください。
サンプルでは4人作成してみました。
これで、選択肢が用意できたので、以下のURLにアクセスしてください。
http://localhost:3000/buildings/new
このように、所有者を選択する複数の選択肢が用意されているのを確認できます。
また、実際に値をデータベースに保存していくためには、buindingコントローラーに配列として保存する設定をする必要があります。
buildings_controller.rbを開いて、以下のコードに差し替えてください。
これで、複数選択した値を保存できるようになりました。
まとめ
いかがでしたでしょうか?
この記事では、checkboxの使い方を解説しました。
checkboxを使えば、単一の項目、複数の項目をユーザーに選択させる実装が簡単にできて便利です。
今回説明した利用規約への同意や、またメールマガジンの購読の有無など実際にチェックボックスは多く使用されています。
この記事で勉強した知識を使って、ぜひ自分でチェックボックスを実装してみてください。
もしcheckboxの使い方について忘れてしまったらこの記事を確認してくださいね!
33歳、未経験だった僕がフリーエンジニアになれた理由
現在フリーでWEBエンジニアをやられている濱口直行さん。33歳で、プログラミングを学び始め、約半年という短い期間で独立までされた学習ログを余すことなくインタビューさせていただきました。プログラミングを学習中の方はもちろん、独立をお考えの方まで幅広く活用できる記事になっています。この機会に是非活用していただければと思います。
未経験者でも安心の徹底サポート!まずは完全無料の体験レッスン!
「プログラミングに興味があるけど未経験だし、、、」とお悩みの方はご安心ください。
- 24時間質問し放題
- あなただけのオーダーメイドカリキュラムで学習の効率化
- 仕事獲得方法からオリジナルアプリ開発方法
侍エンジニア塾では徹底したサポートによる「オーダーメイドカリキュラム」を作成しています。
まずは無料体験レッスンで、「挫折しない学習方法」や「あなただけの学習ロードマップ」を知り、学習の効率化をしましょう。独学の難点である「オリジナルアプリの作り方やエラーの対処法」についてもアドバイスさせていただきます。
詳しいサービス内容は、下記よりご参照ください。
学習者インタビュー
人気記事セレクション
プログラミング学習者必見
専属講師に質問し放題、レッスンし放題!最短1ヶ月でフリーランスエンジニアプログラミング学習カリキュラム無料公開中
Ruby学習カリキュラム無料公開中
Python学習カリキュラム無料公開中
1記事最大11,000円!テックライター募集