前提・実現したいこと
Ruby on Railsでwebアプリを作っています。
ランキング機能を実装中に以下の問題が発生しました。
発生している問題
共感数のランキング表示はできたのですが、応援数のランキング表示をしようとすると、URLだけ変わって、共感数のランキング表示になってしまいます。
該当のソースコード
view
1<div class="row"> 2 <div class="heading"><h5>投稿一覧</h5></div> 3 <div class="ml-5 mt-4"> 4 <%= link_to "共感数が多い順に並び替える", posts_path(sort: 'sympathy'), class: "expand" %> 5 </div> 6 <div class="ml-5 mt-4"> 7 <%= link_to "応援数が多い順に並び替える", posts_path(sort: 'cheer'), class: "expand" %> 8 </div> 9 </div> 10 11 <div class="row"> 12 <div class="col mt-3"> 13 <% if params[:category_id] %> 14 <h5><%= @category.name %>の投稿一覧 (全<%= @all_posts_count %>件)</h5> 15 <% else %> 16 <h5>投稿一覧 (全<%= @all_posts_count %>件)</h5> 17 <% end %> 18 <div id="index"> 19 <%= render "admin/posts/index", posts: @posts %> 20 </div> 21 <%= paginate @posts %> 22 </div> 23 </div>
view
1部分テンプレート 2 3<table class='table'> 4 <tbody> 5 <% if posts.present? %> 6 <% posts.each do |post| %> 7 <% unless current_customer.muting?(post.customer) %> 8 <tr id="post_<%= post.id %>"> 9 <td><%= post.created_at.strftime("%Y/%m/%d %H:%M:%S") %></td> 10 <td><%= post.category.name %></td> 11 <td> 12 <div class="expand-image" data-image-url="<%= attachment_url(post, :image, :fill, 700, 700) %>"> 13 <!--data:データ型を扱うことの宣言。その後ろは任意--> 14 <!--attachment_url:refileのURLを取得するメソッド--> 15 <%= attachment_image_tag(post, :image, :fill, 50, 50) %> 16 </div> 17 </td> 18 <div class="modal"> 19 <div class="big-img"><img src="" alt=""></div> 20 <p class="close-btn"><a href="">✖</a></p> 21 </div> 22 <td class="text"><p><%= post.text.truncate(100) %></p></td> 23 <!--truncate():文字数制限--> 24 <% if post.customer == current_customer %> 25 <td><%= link_to '編集する', edit_post_path(post), class: "btn btn-sm btn-success" %></td> 26 <td><%= link_to '削除する', post_path(post), method: :delete, data: { confirm: '本当に消しますか?' }, class: "btn btn-sm btn-danger" %></td> 27 <% else %> 28 <td class="sympathy-btn"><%= render "public/sympathies/sympathy-btn", post: post %><div class="shadow"></div></td> 29 <td class="cheer-btn"><%= render "public/cheers/cheer-btn", post: post %><div class="shadow"></div></td> 30 <td><%= link_to "非表示にする", customer_relationships_path(post.customer.id), method: :post, class: "btn btn-success" %></td> 31 <% end %> 32 </tr> 33 <% end %> 34 <% end %> 35 <% else %> 36 <pclass="mx-auto white">検索に合致するものはありません</p> 37 <% end %> 38 </tbody> 39</table>
controller
1class Public::PostsController < ApplicationController 2 3 before_action :authenticate_customer! 4 5 def index 6 if params[:category_id] 7 @category = Category.find(params[:category_id]) 8 all_posts = @category.posts 9 else 10 all_posts = Post.includes(:category) 11 end 12 muted_customer = Relationship.where(muter_id: current_customer.id) 13 14 if params[:sort] == "sympathy" 15 @posts= all_posts.page(params[:page]).left_outer_joins(:sympathies).where.not(customer_id: muted_customer.pluck(:muted_id)) 16 .group('posts.id').select('posts.*, COUNT("sympathies.*") AS sympathy').order(sympathy: :desc) 17 # ? 18 elsif params[:sort] == "cheer" 19 @posts= all_posts.page(params[:page]).left_outer_joins(:cheers).where.not(customer_id: muted_customer.pluck(:muted_id)) 20 .group('posts.id').select('posts.*, COUNT("cheers.*") AS cheer').order(cheer: :desc) 21 22 else 23 @posts = all_posts.page(params[:page]).reverse_order.where.not(customer_id: muted_customer.pluck(:muted_id)) 24 end 25 26 @all_posts_count = all_posts.count 27 @categories = Category.all 28 end 29 30end 31
試したこと
controllerのsympathyの箇所をコメントアウトしても同じ挙動になりました。
補足情報(FW/ツールのバージョンなど)
cloud9
rails version 5.2.6
あなたの回答
tips
プレビュー