LoginSignup
2
1

activerecord.ja.ymlファイルの便利さ

Posted at

はじめに

 Railsで簡単な掲示板サイトを作っていた時に、ページ(今回はプロフィール画面)のカラムが期待通りに表示されておらず、なかなか原因が分からなかった事がありました。

環境

ruby 3.14
rails 7.0.3.1

目次

事例
activerecord.ja.ymlファイル
別の方法
まとめ

事例

 Railsで簡単な掲示板サイトを作っていた時に、profileページが期待通りに表示されませんでした。

qiita1-1.png

メールアドレスや氏名がちゃんと表示されているにも関わらず、アバターだけがAvatarと英語表記になってしまっています。

profiles/edit.html.erb

<div class="mb-3">
  <%= form.label :last_name %>
  <%= form.text_field :last_name, class: 'form-control' %>
</div>
<div class="mb-3">
  <%= form.label :first_name %>
  <%= form.text_field :first_name, class: 'form-control' %>
</div>
<div>
 <%= form.label :avatar %>
  <%= form.file_field :avatar, class: "form-control", accept: 'image/*' %>
  <%= form.hidden_field :avatar_cache %>
</div>

form_withの書き方が間違っているのか、しかし他のカラムはしっかり表示されているのになぜ…。

activerecord.ja.ymlファイル

i18nというgemがあります。Railsではデフォルトで入っている、様々な言語に対応するためのものですね。

これを用いるのに必要なファイルが、ja.ymlファイルとactiverecord.ja.ymlファイル。

今回関わってくるのは後者のactiverecord.ja.ymlファイル。
このファイルは「このテーブルのこのカラムは〇〇と表記してね」とカスタマイズすることが出来る大変便利な機能ですが、この機能のありがたさが当時はあまりピンと来ておらず、「とりあえず書くのが決まり」と解釈していました。

今回edit.html.erbで書いた:avatarは、Userテーブルのavatarというカラム。

config/locales/activerecord.ja.ymlファイルを確認してみる。

qiita1-3.png

他のカラムは登録されているのだが、今回はavatarはまだ登録されていない。

早速登録してみましょう

qiita1-4.png

これでUserテーブルのカラムであるavatarに”アバター”と名前をつける事で、逐一form_withを使う時に、〇〇とか書かなくても大丈夫なようになった。

ブラウザの方も確認してみると、

qiita1-5.png

無事解決。

ちなみに開発者ツールを使うと次のような構成になっているのが分かる。

activerecord.ja.ymlファイルに記述しない場合
qiita1-7.png

activerecord.ja.ymlファイルに記述しない場合
qiita1-6.png

別の方法

i18nにコードを追加しない場合は、以下の画像2行目のように表示させたい言葉、つまり"アバター"と書いてしまうのもあり。
qiita1-8.png
しかしながら、i18nを利用すれば、後々コードが膨大になった後で修正する際には便利。

まとめ

サイトを作り始めの時は、activerecord.ja.ymlファイルやja.ymlファイルに記述するのは手間ですが、数箇所form_withを使う状況になることもあり得るので、活用してしまった方が便利。

 「システムテストをして、実装が正確に行われているかを判断する場合」ではテストに通らない原因となるので、詰まった際にはactiverecord.ja.ymlへのコードの書き忘れも念頭においた方が良いかもしれません。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1