※本サイトで紹介している商品・サービス等の外部リンクには、アフィリエイト広告が含まれる場合があります。
日付を表示する
データベースには、指定したカラム(title、content)の他に自動で作成されるカラムがある
- id
- created_at
- update_at
コードは前回までの続きを編集していく
index.html.erbに以下を追記する
<p><%= article.created_at %></p>
↓ プレビューしてみる
秒数とか「UTC」とか、余計なものが表示されちゃっている
config/locales/ja.ymlを確認する
日時表記のフォーマットが書いてある
time:
am: 午前
formats:
default: "%Y年%m月%d日(%a) %H時%M分%S秒 %z"
long: "%Y/%m/%d %H:%M"
short: "%m/%d %H:%M"
pm: 午後
初期設定は「default: “%Y年%m月%d日(%a) %H時%M分%S秒 %z”」
このdefault
以降を書き換えるとよさそう
default: "%Y/%m/%d"
何年/何月/何日という表記がdefault
になる
index.html.erbに戻って以下のコードを追記する
<p><%= I18n.l(article.created_at, format: :default) %></p>
I18nとは、国際化の意味
I18n は、internationalizationの略です。
internationalizationの先頭の文字i、最後の文字n、その間の文字数が18なので、I18nと略されています。
format: :default
にすることで、ja.ymlで設定したdefault表記が反映される
<p><%= I18n.l(@article.created_at, format: :default) %></p>
show.html.erbでは@article
にすること
読みやすくなった!
もっと簡単に書きたい
app/models/article.rbに以下のコードを追加する
class Article < ApplicationRecord
# 中略
def display_created_at
I18n.l(self.created_at, format: :default)
end
end
display_created_at
のメソッドを定義しておくと、あちこちに書かなくてよくなる
article
はArticle
クラスのインスタンスなので、クラスで定義しておく
Articleクラスにメソッドを書き足す(拡張する)ことで、controllerやviewで使用できる
<p><%= article.display_created_at %></p>
<p><%= @article.display_created_at %></p>
「self
」の部分は自身を指すので、htmlに書くときは置き換える
#DAY15