enumの値を日本語化する
本日、enumの値を英語で設定し、ビューでの表示は日本語にするという設定を行いました。
わからないことが多く時間がかかったため、その手順をメモしておきます!!
①enumの設定
以下のように、英語表記でenumの値を設定します。
class Task < ApplicationRecord
略
enum status: [:untouched, :working, :done]
略
end
②enum_help導入
enumの値にi18nの設定を追加するのは少々面倒なようでしたので、gemを使用する事にしました。
Gemfileにenum_helpというgemを追記し、bundle installします。
③i18nの設定
ja.ymlに、以下のように設定を追記します。
ja:
enums:
task: //モデル名
status: //カラム名
untouched: "未完了"
working: "着手中"
done: "完了"
④enumが日本語表示されるようにする
セレクトタグで表示されるenumの値を日本語にするには以下のようにします。
= select_tag :pickup, options_for_select(Task.statuses.keys.map {|k| [I18n.t("enums.task.status.#{k}"), k]})
すると、以下のようなHTMLに変換されます。
<select name="pickup" id="pickup">
<option value="untouched">未完了</option>
<option value="working">着手中</option>
<option value="done">完了</option>
</select>
セレクトタグではなく、普通の部分の表記を日本語に変える際は以下のようにします。
= task.status_i18n