モデルにenumを記述。
model.rb
enum delivery_area:{
"---":0,
北海道: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
}
hamlで呼び出す。
.listing-product-regional-original-delivery
.listing-default__label 配送元の地域
%span.listing-default--require 必須
.listing-select-wrapper
.listing-select-wrapper__box
= f.select :delivery_area, Product.delivery_areas, {}, {class: 'listing-select-wrapper__box--select'}
%i.fas.fa-chevron-down.listing-select-wrapper__box--arrow-down
(補足)
= f.select :今回はカラム名に合わせた名前, モデル名.今回はカラム名に合わせたenum名の複数形, {オプションが必要なら記述、今回は特にないがオプションなしを明示しなければならないので、空欄で記載}, {このセレクトボックスのクラス名}
※注意
enumは同じkeyを使ってはいけないらしい。
<参考>https://www.changesworlds.com/blog/2017/08/how-to-use-activerecord-enum-and-how-to-avoid-duplicate-errors/
####例
下記だと "---":0,が重複している為、ArgumentErrorが発生する。
参考URLのように_prefix: trueをつけることで解決できた。
enum delivery_method:{
"---":0,
未定:1,らくらくメルカリ便:2,ゆうメール:3,レターパック:4,普通郵便(定型、定型外):5,
クロネコヤマト:6,ゆうパック:7,クリックポスト:8,ゆうパケット:9
},_prefix: true
enum delivery_area:{
"---":0,
北海道: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
},_prefix: true