3
1

More than 3 years have passed since last update.

カテゴリー別、最大いいね数の投稿を別途表示

Last updated at Posted at 2021-02-09

概要

投稿別に、いいね数が最大値の回答を別途表示できる方法について述べている。

バージョン

rubyのバージョン ruby-2.6.5
Railsのバージョン Rails:6.0.0

前提

・いいね機能を実装済み

image.png

できること

いいね数、最大の投稿を別途表示できる。

image.png

今回の例(テーブルについて)

投稿・・・definition
回答・・・answer
いいね・・like

実装の全体像

①コントローラーにインスタンス変数を定義

②viewに、表示のためeachメソッドを用いた記述

実装

①コントローラーにインスタンス変数を定義

app/controllers/definitions_controller.rb
def show
〜省略〜
    @rank = Answer.find(Like.where(definition_id: params[:id]).group(:answer_id).order('count(answer_id) desc').limit(1).pluck(:answer_id))
  end
〜省略〜

※limit(1)の( )内の数値を変更すればランキング表示として実装もできる。

②viewに、表示のためeachメソッドを用いた記述

app/views/definitions/show.html.erb

〜省略〜

   <% @rank.each do |rank| %>
      いいね数が最も多い回答</br>
       <%= link_to rank.user.nickname, "/users/#{rank.user_id}" %>
         <div class="box"><%= rank.answer %></div> #←記述はここ
         <i class="fas fa-heart"></i><%= rank.likes.count %>
   <% end %>

〜省略〜

※i class以下はFont Awesomeを使用している
※CSSは任意の指定

完成

image.png

この方法だと、カテゴリー別に最大のいいね数の投稿を表示することができます。
コントローラーでwhereメソッドを用いなければ、画像ピンク色の投稿が、カテゴリーをまたいでも永遠繰り返されます。

以上です。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1