概要
本記事ではRailsのcreated_atで作成日時を表示する際に、従来の時間表記ではなく「〇〇分前」のように表示する方法を記載しています。
完成イメージは以下の通りです。
開発環境
- Ruby 2.6.5p114
- Rails 6.0.3.4
手順
① 日本語設定をする
まずは、日本語設定をします。
configのapplication.rbファイルに以下を記述してください
config/application.rb
config.i18n.default_locale = :ja
② 日本語のyamlファイルを作成する
次に、どのような日本語表記にするかyamlファイルに設定を書いていきます。
日本語に関するja.ymlはRailsにデフォルトで入っていないため、以下を参考に作成してください。
ja.ymlファイルはconfig/locales配下に作成します。
config/locales/ja.yml
ja:
datetime:
distance_in_words:
about_x_hours:
one: 約1時間
other: 約%{count}時間
about_x_months:
one: 約1ヶ月
other: 約%{count}ヶ月
about_x_years:
one: 約1年
other: 約%{count}年
almost_x_years:
one: 1年弱
other: "%{count}年弱"
half_a_minute: 30秒前後
less_than_x_seconds:
one: 1秒以内
other: "%{count}秒未満"
less_than_x_minutes:
one: 1分以内
other: "%{count}分未満"
over_x_years:
one: 1年以上
other: "%{count}年以上"
x_seconds:
one: 1秒
other: "%{count}秒"
x_minutes:
one: 1分
other: "%{count}分"
x_days:
one: 1日
other: "%{count}日"
x_months:
one: 1ヶ月
other: "%{count}ヶ月"
x_years:
one: 1年
other: "%{count}年"
③ ビューで表示する
最後にビューで表示します。
表示する際は、Railsが用意してくれているtime_ago_in_words
メソッドを使用します。
引数には作成日時を渡します。
index.html.erb
<p>#{time_ago_in_words(post.created_at)}前にアウトプット</p>
※postの部分は適宜書きかえてください
以上で実装が完了しました! 表示方法を自分好みに修正したい時は`ja.yml`にて修正してください。