enumを日本語化する


今回の目的

Materializeとsimple_formでシンプルでいい感じのフォームを作りたい!
enumを使ったselectボックスの実装
上記からの作業となります。今回前回実装したenumを日本語化します。

Gemfileに追加からのbundle install

まずは「enum_help」をGemfileに記載して「bundle install」します。

Gemfile.
gem 'enum_help' 
ターミナル.
bundle install

ja.ymlとapplication.rbに記載で日本語化

ja.ymlに下記を記載します。ファイルがない場合は作成しましょう。
またapplicatio.rbでデフォルトの言語を日本語にします。

config/locales/ja.yml
ja:
  enums:
    product:
      unit:
        yen: "円"
        usd: "ドル"
        eur: "ユーロ"
config/application.rb
module EcSite #アプリケーション名
  class Application < Rails::Application
    config.load_defaults 5.2
    config.i18n.default_locale = :ja #追記
  end
end

selectボックスの記述を修正

下記の部分を日本語化します。

new.html.haml
  = simple_form_for(@product) do |f|
    .row
      .input-field.col.s6
        = f.input :name
        = f.input :description
        = f.input :price
        = f.select :unit,Product.units_i18n.invert, {}, placeholder: 0 
    # Product.units_i18n.invertに修正
        = f.input :image
        = f.button :submit

enum_helpを導入することにより「Product.units_i18n.invert」を使用することができます。

ターミナル.
Product.units_i18n.invert
=> {"円"=>"yen", "ドル"=>"usd", "ユーロ"=>"eur"}

完了したら、サーバーを再起動します。

ターミナル.
サーバー停止
rails s #サーバー再起動

結果


正常に表示できました!

以上です。少しでも参考になりましたら、いいねやフォロー気軽にしていただけると励みになります!\(^o^)/

参考

[初学者]Railsのi18nによる日本語化対応