1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

時刻表記にlメソッドを使う

Posted at

経緯

店舗の運営時間を表示したくて調べていたところstrftimeというものを使うことで時刻の表記を指定できることがわかった。

view
 <%= @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/application.rb
 config.time_zone = 'Tokyo'

2 デフォルトの言語をjaに変更、ymlファイルの作成

1と同じファイル内に以下のように記述をすることで言語を日本語に設定する。

config/application.rb
config.i18n.default_locale = :ja

ファイルはconfig/localesja.ymlという名前で作成する。(default_locale の後に続く国名(日本の場合はja)とconfig/localesの〇〇.yml)の〇〇を一致させることでファイルを読み込んでくれる)

3 ja.ymlにフォーマットを作成する

ja.yml
ja:
  time:
    formats:
      default: '%-H:%M'

default:の後の記述を変えることで好みの時間表記にすることができる。

4 ビューファイルに3で設定した時刻を表示
ここでlメソッドが登場する。lメソッドを使うことでymlファイルで指定したフォーマットを利用して時刻を表示させる。
使い方としては頭にlをつける。

view
<%= l @laundry.open_time %> 〜 <%= l @laundry.close_time %>

これでstrftimeをビューファイルに直書きすることなく好みを時刻表記を表示することができる。

view(strftime直書き)
 <%= @laundry.open_time.strftime('%-H:%M')%> 〜 <%= @laundry.close_time.strftime('%-H:%M')%> 

view(lメソッド使用)
<%= l @laundry.open_time %> 〜 <%= l @laundry.close_time %>

lメソッドを使いすっきりとした見た目に変更!!
ちなみにフォーマットを複数用意して使い分け流ことも可能(下記参考記事参照)

参考記事

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?