はじめに
とっても雑な記事ですが、少しでも誰かに役に立てばと思い記事にしました。
前提
簡単な投稿機能が実装済みであること
Railsの基礎的な知識を身につけていること
実装方法
コントローラー
投稿時間を計算するために、コントローラーで今日の日付や、現在時刻を取得します。
tweets_controller.rb
class TweetsController < ApplicationController
def index
@today = Date.today #今日の日付を取得
@now = Time.now #現在時刻を取得
@tweets = Tweet.all #tweeetsテーブルの全レコードを取得
end
(略)
・
・
・
end
ビュー
投稿時間に関するところの解説は下に記載しております。
tweets/index.html.erb
<div>
<% @tweets.each do |t| %>
<div class="tweet">
<%= t.body %>
<% if (@now - t.created_at) <= 60 * 60 %>
<%=((@now - t.created_at) / 60).to_i.to_s + "分前" %>
<% elsif (@now - t.created_at) <= 60 * 60 * 24 %>
<%=((@now - t.created_at) / 3600).to_i.to_s + "時間前" %>
<% elsif (@today - t.created_at.to_date) <= 30 %>
<%= (@today - t.created_at.to_date).to_i.to_s + "日前" %>
<% else %>
<%= t.created_at.strftime('%Y-%m-%d') %>
<% end %>
</div>
<% end %>
</div>
解説(日本語訳)
tweets/index.html.erb
<div>
<% @tweets.each do |t| %>
<div class="tweet">
<%= t.body %>
<% もし、( 現在時刻 - 投稿時間 ) が 3600秒以下(60分以下)だったら %>
<%= 〇〇"分前" %> と表示
<% もし ( 現在時刻 - 投稿時間 ) が 86400秒以下(24時間以下)だったら %>
<%= 〇〇"時間前" %> と表示
<% もし (今日の日付 - 投稿日) が 30日以下だったら %>
<%= 〇〇"日前" %> と表示
<% もしそれ以外だったら(投稿日が30日を超過していたら) %>
投稿時間を yyyy-mm-dd と表示
<% end %>
</div>
<% end %>
</div>
最後に
いかがでしたでしょうか。
とても雑な記事なので編集リクエストなどドシドシお待ちしております。
少しでも開発の手助けとなれば幸いです。
以上、ここまで読んでいただきありがとうございました(^^)