[RUBY] Trier par nombre de likes et par nation de page

introduction

Il s'agit d'une méthode pour ajouter une fonction de pagination après avoir trié le nombre de likes par ordre décroissant. J'ai eu du mal à le mettre en œuvre, je vais donc le laisser sous forme de mémorandum.

procédure

Installer la gemme

gem 'will_paginate'
gem 'bootstrap-will_paginate'

Définir une association

post.rb


  belongs_to :user
  has_many   :likes,    dependent: :destroy
  has_many   :liked_users, through: :likes, source: :user

user.rb


  has_many :likes,    dependent: :destroy
  has_many :liked_posts, through: :likes, source: :user
  has_many :posts,    dependent: :destroy

like.rb


  belongs_to :post
  belongs_to :user

Définir une méthode de classe

post.rb


  def self.sort_like
    Post.all.sort{|a,b| b.liked_users.count <=> a.liked_users.count}
  end

Réflexion sur le contrôleur

post.controller


 @posts = Post.sort_like.paginate(page: params[:page],per_page: (Numéro que vous souhaitez afficher sur une page))

La méthode paginer n'est pas disponible par défaut pour les tableaux. Créez un fichier sous config / initializers et ajoutez require'will_paginate / array '.

will_pagenate.rb


require 'will_paginate/array'

Afficher dans la vue

<% @posts.each do |post|%>
  <%= post.XXX %>
<% end %>
<%= will_paginate @posts %>

Articles que j'ai utilisés comme référence

https://qiita.com/Kazuhiro_Mimaki/items/1f8e851b957f511c88e9 https://qiita.com/nakamurau1@github/items/13e081fcba1af0ca399f

Recommended Posts

Trier par nombre de likes et par nation de page
[Rails] Classement et pagination par J'aime
[Rails] Utilisez la zone déroulante pour trier la liste des articles par date ou par nombre de likes.
Mise en œuvre de la fonction de pagénation
À propos de la troncature de String par le nombre d'octets sur Android
Version simplifiée du calcul des nombres en collectant des informations dans une instance