###前提・実現したいこと
現在、ブログ投稿システムで記事をお気に入りする機能をつけることができました。
これをお気に入りされている数が多い順から記事を並べ替えたいのですが、今まで新着順とその逆までしか実装したことがなのでやり方がわかりません。
###お気に入りの仕様
likesテーブルには
id, user_id, article_id, created_at, updated_atのカラムが存在します。
そして、お気に入りされる記事のテーブルaritclesテーブにはlikes_countカラムがあり何件お気に入りされているのかを記録しています。
likesコントローラー
class LikesController < ApplicationController def like @article = Article.find(params[:article_id]) like = current_user.likes.build(article_id: @article.id) like.save end def unlike @article = Article.find(params[:article_id]) like = current_user.likes.find_by(article_id: @article.id) like.destroy end end
viewファイル
<% if user_signed_in? %> <% if current_user.likes.find_by(article_id: article.id) %> <li class="sngl-sns-clip"> <%= link_to unlike_path(article.id), class: "clicked", method: :delete, remote: true do %> <%= @article.likes.count %> <% end %> </li> <% else %> <li class="sngl-sns-clip"> <%= link_to like_path(article.id), method: :post, remote: true do %> <%= @article.likes.count %> <% end %> </li> <% end %> <% else %> <li class="sngl-sns-clip"><a href="#clip-login" class="clip-login"><%= @article.likes.count %></a></li> <% end %>
これらをlike.jsとunlike.jsで遷移せずにお気に入りしています。
###試したこと
Article.all.sort_by{|article|article.likes_count} のような形で実現できるかもしれないと思っている。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/11/03 08:19