LoginSignup
0
0

More than 1 year has passed since last update.

【Rails】l(エル)メソッドを使用して時刻表示を日本語化rev1

Last updated at Posted at 2022-08-15

はじめに

こちらの記事で一部、よりDRYな書き方をアドバイスいただいたので、その方法で実装をする。ご指摘いただき、ありがとうございます。

環境

No 項目 内容
1 OS Mac
2 Ruby 2.6.3
3 rails 6.0.4

実装

下記のように、lメソッドを使用して、時刻を表示する。

posts/show.html.erb
# <%= post.created_at.to_s(:datetime_jp) %>
# 上記ではなく、下記で記載する。
<%= l object.created_at %>

application.rbに下記を定義する。

config/application.rb
class Application < Rails::Application
    I18n.default_locale = :ja
    config.time_zone = 'Tokyo'
end

l(エル)メソッドにより、ja.ymlのtime.formats.defaultが呼び出される。

config/locals/ja.yml
  time:
    formats:
      default: "%Y年%m月%d日(%a) %H時%M分%S秒 %z"
      default_short: "%Y年%m月%d日"

結果確認

これで、l(エル)メソッドが使える。特にformatsを指定していないため、ja.ymlのdefaultが呼び出される。

posts/show.html.erb
# 再掲
<%= l object.created_at %>
timezone image

記事を投稿した時の情報としてつけた機能のため、不要な部分を取り除いた値、ja.ymlのdefault_shortを使用することも可能。

posts/show.html.erb
# <%= l object.created_at %>
<%= l object.created_at, format: :default_short %>
timezone2 image

ちなみに、今回はjs.ymlで定義したformatをlメソッドによって使用したため、前回作成したconfig/initializers/time_formats.rbは削除可能。

config/initializers/time_formats.rb
# Time::DATE_FORMATS[:datetime_jp] = '%Y年 %m月 %d日'

おわりに

いつもコメントありがとうございます。
とても勉強になりますので、ご指摘がありましたら気軽にコメントお願いします!

0
0
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
0
0