enumの値を日本語化する

本日、enumの値を英語で設定し、ビューでの表示は日本語にするという設定を行いました。

わからないことが多く時間がかかったため、その手順をメモしておきます!!

 

enumの設定

以下のように、英語表記でenumの値を設定します。

class Task < ApplicationRecord

enum status: [:untouched, :working, :done]

end

 

enum_help導入

enumの値にi18nの設定を追加するのは少々面倒なようでしたので、gemを使用する事にしました。

Gemfileにenum_helpというgemを追記し、bundle installします。

以下がenum_helpのリポジトリです!

github.com

 

 

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