🕰️

日時を表示する " l (エル) メソッド "

2023/04/25に公開

日時の表示は strftime で記述するより lメソッド を使うと便利!

lメソッドは、Viewページで created_at や updated_at といった日時を表示をする際に使用できる便利なメソッドです。

以下の例で見比べてみましょう。
投稿の投稿日を表示するための記述です。

・通常の場合 = strftimeで記述

 <%= post.created_at.strftime('%Y/%m/%d %H:%M:%S') %>

投稿日を.strftime('%Y/%m/%d %H:%M:%S')という形式で表示するという記述です。
日付を表示する箇所で毎回記述するには長くて面倒です。
記述ミスが発生するかもしれません。

l(エル)メソッドを使用する

 <%= l post.created_at %>

先ほどと異なり、先頭にl を記述するだけなので簡単!
複数ページに記述する際にも面倒なく、書き間違うこともないでしょう。

そもそもlメソッドとは?

そもそもl(エル)メソッドの仕組みとは??
 ① ja.ymlファイルに日付の表示書式を記述しておく
 ② 日付を表示したいviewファイルでlと記述することで、
  ja.ymlファイルから表示書式を呼び出す

つまり事前の準備(設定)が必要なのです。
ではl(エル)メソッドを使用するための設定を確認しましょう。

lメソッドを使用する準備

1. ja.ymlファイルを用意する

config/locales というフォルダ内にja.ymlというファイルが無い場合、まずファイルの作成が必要です。

Gemfile gem ‘rails-i18n’,~>6.0’  #Railsのバージョンに合ったものを

$ bundle install

これでファイルが作成されているはずなので、フォルダ内を確認しましょう。

2. config/application.rb ファイル

次の2つの記述が必要です。
① 表示を日本人に見やすい書式に変更
② 日本時間で表示するために、タイムゾーンを日本時間に変更

config/application.rb
① config.i18n.default_locale = :ja
② config.time_zone = 'Asia/Tokyo'

既にファイル内にこの記述があればOKです。
なければ追記しましょう。

3. config/locales/ja.yml ファイル

日時表示のデフォルト書式を指定します。

config/locales/ja.yml
ja:
  time:
    formats:
      default: "%Y/%m/%d %H:%M:%S"

これで、.strftime('%Y/%m/%d %H:%M:%S')と記述しなくても
頭にlを付けて記述するだけでdefault: "%Y/%m/%d %H:%M:%S"を呼び出すため、
結果として同じように日時が表示されることになります。
l メソッドはこのファイルから書式を呼び出しているということです!)

views/~~.html.erb
<%= l post.created_at %>

また、次のようにformats:の記述を増やすことで、viewファイルによって表示書式を指定することも可能となります。

config/locales/ja.yml
ja:
  time:
    formats:
      default: "%Y/%m/%d"
      short: "%m/%d"
      time: "%Y/%m/%d %H:%M:%S"

次のように, format: :○○と追記します。

views/~~.html.erb
<%= l post.created_at, format: :short %>
<%= l post.created_at, format: :time %>

以上です。

Discussion