#概要
投稿別に、いいね数が最大値の回答を別途表示できる方法について述べている。
#バージョン
rubyのバージョン ruby-2.6.5
Railsのバージョン Rails:6.0.0
#前提
・いいね機能を実装済み
#できること
いいね数、最大の投稿を別途表示できる。
#今回の例(テーブルについて)
投稿・・・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は任意の指定
完成
この方法だと、カテゴリー別に最大のいいね数の投稿を表示することができます。
コントローラーでwhereメソッドを用いなければ、画像ピンク色の投稿が、カテゴリーをまたいでも永遠繰り返されます。
以上です。