今日ポートフォリオにタグ付け機能を追加し、ランキングを作ったので
アウトプットします。
タグ付け機能はformオブジェクトを使いました。
まずtweetコントローラーにこのように記述します。
tweets_controller.rb
def rank
@tag_ranks = TweetTag.find( TweetTagRelation.group(:tweet_tag_id).order('count(tweet_tag_id)desc').limit(4).pluck(:tweet_tag_id))
end
pluckって何・・・・って思ったので調べてみると
公式では
pluckは、1つのモデルで使用されているテーブルからカラム (1つでも複数でも可) を取得するクエリを送信するのに使用できます。引数としてカラム名のリストを与えると、指定したカラムの値の配列を、対応するデータ型で返します。
だそうです。
pluckの引数にtweet_tag_id(これは中間テーブルのタグのカラム)をとることで中身が取得できます。
次にviewです tweetsの配下にファイルを作ってこのように記述してください
rank.html.erb
<div class="rank-tag-all">
<% @tag_ranks.each.with_index(1) do |tag,i| %>
<div class="rank-tag-num">第<%= i %>位 </div>
<div class="rank-tag"><%= tag.name%></div>
<%end%>
</div>
with_index(1)を書いて第二引数をとることで順位が表示されます。
雑談
かなり眠いので簡素的にかきました。。。
もっと早い時間にqiitaを書く予定を立てようと思います...