目次
Gemを導入
gemfile
に以下を追加
gem 'rails-i18n'
gem 'enum_help'
追加したら$ bundle install
です。
config/application.rbを編集
以下を追加します。
class Application < Rails::Application
config.load_defaults 6.1
config.time_zone = 'Tokyo'
config.i18n.default_locale = :ja
config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.yml').to_s]
end
モデル(今回はfeedbackモデル)にenumを記載
feedback.rb
に以下を追加。
ちなみに、今回は、Feedbackテーブル
にstatusカラム(integer型)
の前提です。
それから、マイグレーション生成時にstatus
カラムにnull: false, default: 1
も追加しています。
class Feedback < ApplicationRecord
enum status: { waiting: 1, finished: 2 }
end
config/locales/ja.ymlを作成、編集
config/locales
配下にja.yml
を作成。
ja:
enums:
feedback:
status:
waiting: 確認中
finished: 改善済み
フォームで日本語表示
以下の様に記述します。
カラム名複数形_i18n.invert がポイントです。
<%= f.label :status, 'ステータス' %>
<%= f.select :status, Feedback.statuses_i18n.invert %>
viewで日本語表示
_i18n
を日本語表記にしたいカラムの後に追加。
<td><%= feedback.status_i18n %></td>
これで完了です。