日時を表示する " l (エル) メソッド "
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.i18n.default_locale = :ja
② config.time_zone = 'Asia/Tokyo'
既にファイル内にこの記述があればOKです。
なければ追記しましょう。
3. 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 メソッド
はこのファイルから書式を呼び出しているということです!)
<%= l post.created_at %>
また、次のようにformats:
の記述を増やすことで、viewファイルによって表示書式を指定することも可能となります。
ja:
time:
formats:
default: "%Y/%m/%d"
short: "%m/%d"
time: "%Y/%m/%d %H:%M:%S"
次のように, format: :○○
と追記します。
<%= l post.created_at, format: :short %>
<%= l post.created_at, format: :time %>
以上です。
Discussion