質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

0回答

476閲覧

いいね数(今回は共感数、応援数)の数でランキング表示させたいです。

morfonica

総合スコア33

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2021/08/18 15:12

前提・実現したいこと

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問