Edited at

[Rails]enumの値を日本語化してラジオボタンに突っ込む

More than 1 year has passed since last update.

enumの値ごとにラジオボタンを作るのがめんどくさいなと思っていろいろ調べた時の備忘録です。


前提条件

こんなモデルがあったとして


models/user.rb

class User < ApplicationRecord

enum area: {east: 0, west: 1}
# (以下略)
end

enum_helpというgemを入れたとして


Gemfile

gem 'enum_help'


enumの値に対応した日本語をja.ymlに入れたとして


ja.yml

ja:

enums:
user:
area:
east: 関東
west: 関西

そこから、どうやってlabelに日本語、valueに英語が入ったのラジオボタンを作るかという話です。


結論

こんな感じでできました!嬉しい!


users/_form.haml

= form_for(@user) do |f|

= f.collection_radio_buttons :area, User.areas_i18n, :first, :last, include_hidden: false do |b|
- content_tag(:div, class: "wrapper-class") do
- b.radio_button(class: "button-class") + b.label(class: "label-class")
= f.submit

collection_radio_buttonsというメソッドがあるんですね。

ただ、f.collection_radio_buttonsとは少し違うようです。

詳しくはここに書いてました。

日本語でなんとなくイメージを掴みたいならこの記事が読みやすかったです。