検索ワード
rails ラジオボタン
rails ラジオボタン 複数
rails ラジオボタン enum
rails radio_button
シンプルにコードのみ公開します。
作業手順
- enumを使う場合、カラムのデータ型はintegerで作成する。 ※ stringだとDBに保存されない!!
- マイグレーションファイルには、「default: 0」 を記述する。 *場合による。
- ストロングパラメータにカラム名を入れる。
- 以下に進む
ラジオボタンの場合
enum job_type: {一般の求人:1, 特殊な求人:2, 不思議な求人:3}
<div class="field">
<span class="job_type_engine">求人検索エンジン用</span><br>
<div class="radio-inline">
<%= f.radio_button :job_type, :一般の求人, checked: "checked" %>
<%= f.label :一般の求人, class: "job_type_label" %>
</div>
<div class="radio-inline">
<%= f.radio_button :job_type, :特殊な求人 %>
<%= f.label :特殊な求人, class: "job_type_label" %>
</div>
<div class="radio-inline">
<%= f.radio_button :job_type, :不思議な求人 %>
<%= f.label :不思議な求人, class: "job_type_label" %>
</div>
</div>
<strong>求人の種類</strong><br>
<%= f.hidden_field :job_type %>
<%= @job_administration.job_type %>
DBから値を取得してみる
rails c
JobAdministration.find_by(job_type: 2) # 整数でアクセス
「特殊な求人」のレコードを取得
DBには文字列で入っているように見えるが、取得は整数で行う。
セレクトボックスの場合
enum status: {審査中:0, 承認:1, 却下:2}
<div class="field">
<%= f.select :status, ApplicantStatus.statuses.keys, {prompt: '選択してください'}, class: 'form-control btn btn-info' %>
</div>
# ApplicantStatus.statuses.keys の statuses(カラム名)は複数形にする。
数値は注意する
この場合の数値は、「全角」にすること!! 半角ではエラーになる。
enum minimum_annual_income_search: {300万以上:1, 400万以上:2, 500万以上:3, 600万以上:4, 700万以上:5, 800万以上:6, 900万以上:7, 1000万以上:8}
複数のenum属性を持つ場合の注意
class LunchSet < ActiveRecord::Base
enum curry: { chicken: 0, vegitables: 2, beans: 3, shrimp: 4 }
enum drink: [:coffee, :mango, :chai, :vegitables]
end
しかし、このコードは、vegitablesという名前を2回使っているため、vegitables?などのメソッドが多重定義となり、エラーになります。
従って、複数のenum属性を使う場合は、例えば名前に接尾辞をつけるなどして、名前がかぶらないように注意してください。
class LunchSet < ActiveRecord::Base
enum curry: { chicken_curry: 0, vegitables_curry: 2, beans_curry: 3, shrimp_curry: 4 }
enum drink: [:coffee_drink, :mango_drink, :chai_drink, :vegitables_drink]
end
都道府県のセレクトボックス
enumを使用するため、work_locationカラムをintegerで作成(追加)する。
t.integer "work_location"
モデルに以下を記述
enum work_location: {
北海道:1,青森県:2,岩手県:3,宮城県:4,秋田県:5,山形県:6,福島県:7,
茨城県:8,栃木県:9,群馬県:10,埼玉県:11,千葉県:12,東京都:13,神奈川県:14,
新潟県:15,富山県:16,石川県:17,福井県:18,山梨県:19,長野県:20,
岐阜県:21,静岡県:22,愛知県:23,三重県:24,
滋賀県:25,京都府:26,大阪府:27,兵庫県:28,奈良県:29,和歌山県:30,
鳥取県:31,島根県:32,岡山県:33,広島県:34,山口県:35,
徳島県:36,香川県:37,愛媛県:38,高知県:39,
福岡県:40,佐賀県:41,長崎県:42,熊本県:43,大分県:44,宮崎県:45,鹿児島県:46,沖縄県:47
}
formに以下を記述
<div class="field">
<%= f.label :勤務地、求人検索エンジン用 %><br>
<%= f.select :work_location, JobAdministration.work_locations.keys, {prompt: '選択してください'}, class: 'form-control btn btn-info' %>
</div>
参考サイト
http://qiita.com/seisonshi/items/fb123f0a05b6b40d72af
http://tech.misoca.jp/entry/2015/08/10/132419
http://code-examples-ja.hateblo.jp/entry/2014/07/29/Bootstrap%E3%81%A7%E3%83%A9%E3%82%B8%E3%82%AA%E3%83%9C%E3%82%BF%E3%83%B3%E3%82%84%E3%83%81%E3%82%A7%E3%83%83%E3%82%AF%E3%83%9C%E3%83%83%E3%82%AF%E3%82%B9%E3%82%92%E6%A8%AA%E4%B8%A6%E3%81%B3