Railsのラジオボタン(f.radio_button)、セレクトボックス + enum(都道府県あり)の使い方

#### 検索ワード
rails ラジオボタン
rails ラジオボタン 複数
rails ラジオボタン enum
rails radio_button

シンプルにコードのみ公開します。

## 作業手順
1. enumを使う場合、カラムのデータ型はintegerで作成する。 ※ stringだとDBに保存されない！！
2. マイグレーションファイルには、「default: 0」 を記述する。 *場合による。
3. ストロングパラメータにカラム名を入れる。
4. 以下に進む

## ラジオボタンの場合

```job_administration.rb
enum job_type: {一般の求人:1, 特殊な求人:2, 不思議な求人:3}
```

```_form.html.erb
<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>
```

```confirm.html.erb
<strong>求人の種類</strong><br>
<%= f.hidden_field :job_type %>
<%= @job_administration.job_type %>
```

### DBから値を取得してみる
rails c
JobAdministration.find_by(job_type: 2) # 整数でアクセス
「特殊な求人」のレコードを取得
DBには文字列で入っているように見えるが、取得は整数で行う。

## セレクトボックスの場合
```job_administration.rb
enum status: {審査中:0, 承認:1, 却下:2}
```

```_form.html.erb
<div class="field">
  <%= f.select :status, ApplicantStatus.statuses.keys, {prompt: '選択してください'}, class: 'form-control btn btn-info' %>
</div>

# ApplicantStatus.statuses.keys の statuses(カラム名)は複数形にする。
```

## 数値は注意する
この場合の数値は、「全角」にすること！！ 半角ではエラーになる。

```money.rb
enum minimum_annual_income_search: {３００万以上:1, ４００万以上:2, ５００万以上:3, ６００万以上:4, ７００万以上:5, ８００万以上:6, ９００万以上:7, １０００万以上:8}
```


## 複数のenum属性を持つ場合の注意
```lunch_set.rb
class LunchSet < ActiveRecord::Base
  enum curry: { chicken: 0, vegitables: 2, beans: 3, shrimp: 4 }
  enum drink: [:coffee, :mango, :chai, :vegitables]
end
```

しかし、このコードは、vegitablesという名前を２回使っているため、vegitables?などのメソッドが多重定義となり、エラーになります。

従って、複数のenum属性を使う場合は、例えば名前に接尾辞をつけるなどして、名前がかぶらないように注意してください。

```lunch_set.rb
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で作成(追加)する。

```schema.rb
t.integer  "work_location"
```

モデルに以下を記述

```job_administration.rb
  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に以下を記述

```_form.html.erb
<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