エンジニアのサブルーチン

あまり注目されない組み込みのシステムエンジニアをやっています。エンジニア業界のこととか、勉強したこととかを不定期に更新していきます。

strftimeを使わず、I18nを使って時間表示をスマートにする

strftimeメソッドは日付データを編集し、文字列として変換できる便利なメソッドです。

f:id:code_sugar:20190815204703p:plain

この場合、DBに保存されてるcreated_at内の日付データを取得しそれをstrftimeメソッドの()内に表記されてる書式文字列(%Yなら年 %mなら月を表す)を用いて文字列として変換します。



これは確かに便利だけど、strftimeを何度も使用する場面が出てきた時、書式文字列を何度も書くのは面倒臭いし、見にくい。タイポも誘発しやすいと思う。strftimeでいい場面の方が圧倒的に多いのでは?



なのでI18nを使ってもっと見やすく簡潔してみる
f:id:code_sugar:20190815204713p:plain

config/locals内にあるja.ymlを編集。
I18nはキーとバリューからなるデータ構造となっている。


I18nはviewの中ではtまたはl(今回の場合はl)で呼び出せる。
f:id:code_sugar:20190815204748p:plain
第一引数に日付データ、第二引数にformat: 'キー'で第一引数の日付データが第二引数で指定したキーに対応したバリューに沿って文字列として変換される。


こうすることでスマートに表示できる(と個人的には思いました)