ruby on rails ツイッタートレンドの時間毎の表示の実装(企業からいただいた課題)
本日訪問した企業より、スクールで作った最終作品に対して、追加課題をいただきました。
実装を行いましたので、備忘録として残します。
最終作品:ツイッター
既実装機能:ハッシュタグ機能 ハッシュタグのトレンド表示機能(トレンドの表示はハッシュタグの多い順に上位6件を表示)
課題:トレンドの表示を1時間、1日、1週間で時間要素を加えて表示
TIMEクラスでの時間範囲の指定、renderのcollectionオプションにasでローカル変数を定義できるのは使えます!!
コントローラーに1時間以内、1日以内、1週間以内に登録されたデータを抽出するコードを追記
hour_from = Time.now - 1.hour #1時間前
day_from = Time.now - 1.day #1日前
week_from = Time.now - 1.week #1週間前
to = Time.now #Timeクラスで現在時刻を獲得
#現在から各指定時間までにcreated_atしたTagsテーブルのレコードをtags_countが多い順に上位6件まで @trendの配列に格納
@trend = Tag.where(created_at: hour_from..to).order("tags_count DESC").limit(6)
@day_trend = Tag.where(created_at: day_from..to).order("tags_count DESC").limit(6)
@week_trend = Tag.where(created_at: week_from..to).order("tags_count DESC").limit(6)
表示するVIEWに@trend、@day_trend、@week_trendを展開
%ul.nav.nav-tabs
%li.nav-item
%a.nav-link.active{"data-toggle": "tab", href: "#latast-trands"} hour
%li.nav-item
%a.nav-link{"data-toggle": "tab", href: "#day-trands"} day
%li.nav-item
%a.nav-link{"data-toggle": "tab", href: "#week-trands"} week
.card.pl-md-3.pt-md-3.pb-md-3
%h4 トレンド
.tab-content
#latast-trands.tab-pane.active
= render partial: "partial/trend", collection: @trend
#day-trands.tab-pane
= render partial: "partial/trend", collection: @day_trend, as: "trend"
#week-trands.tab-pane
= render partial: "partial/trend", collection: @week_trend, as: "trend"
partial/_trend.html.haml内容
= link_to "/post/hashtag/#{trend.name}" ,class: "replyblue" do %h5 ##{trend.name} %p #{trend.tags_count}件のツイート