Rails
enum
RadioButton

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

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とは少し違うようです。
詳しくはここに書いてました。
日本語でなんとなくイメージを掴みたいならこの記事が読みやすかったです。