経緯
店舗の運営時間を表示したくて調べていたところstrftimeというものを使うことで時刻の表記を指定できることがわかった。
<%= @laundry.open_time.strftime('%-H:%M')%> 〜 <%= @laundry.close_time.strftime('%-H:%M')%>
これで07:00 ~ 23:00
といった表記ができるようになった。
しかしどうもstrftime('%H:%M')
が2回繰り返されていることが気になり他の方法を調べていたところ、lメソッド(エルメソッド)を発見。上記の書き方からlメソッドでの書き方に変更をした過程を記録しておく。
lメソッドを使うまでの流れ
1 タイムゾーンを設定(strftimeを使用した時点で設定は済んでいたが今後見返せるように記述しておく)
lメソッドを使用する前にタイムゾーンを設定して日本時間で表示されるようにする必要がある(設定をしていない場合はUTC(世界協定時)
になっており日本時間とは9時間の差がある)
config/application.rb
に以下のように記述を行う。
config.time_zone = 'Tokyo'
2 デフォルトの言語をjaに変更、ymlファイルの作成
1と同じファイル内に以下のように記述をすることで言語を日本語に設定する。
config.i18n.default_locale = :ja
ファイルはconfig/locales
にja.yml
という名前で作成する。(default_locale
の後に続く国名(日本の場合はja)とconfig/localesの〇〇.yml
)の〇〇を一致させることでファイルを読み込んでくれる)
3 ja.yml
にフォーマットを作成する
ja:
time:
formats:
default: '%-H:%M'
default:
の後の記述を変えることで好みの時間表記にすることができる。
4 ビューファイルに3で設定した時刻を表示
ここでlメソッドが登場する。lメソッドを使うことでymlファイルで指定したフォーマットを利用して時刻を表示させる。
使い方としては頭にlをつける。
<%= l @laundry.open_time %> 〜 <%= l @laundry.close_time %>
これでstrftime
をビューファイルに直書きすることなく好みを時刻表記を表示することができる。
<%= @laundry.open_time.strftime('%-H:%M')%> 〜 <%= @laundry.close_time.strftime('%-H:%M')%>
<%= l @laundry.open_time %> 〜 <%= l @laundry.close_time %>
lメソッドを使いすっきりとした見た目に変更!!
ちなみにフォーマットを複数用意して使い分け流ことも可能(下記参考記事参照)
参考記事