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.
gem 'will_paginate'
gem 'bootstrap-will_paginate'
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
post.rb
  def self.sort_like
    Post.all.sort{|a,b| b.liked_users.count <=> a.liked_users.count}
  end
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'
<% @posts.each do |post|%>
  <%= post.XXX %>
<% end %>
<%= will_paginate @posts %>
https://qiita.com/Kazuhiro_Mimaki/items/1f8e851b957f511c88e9 https://qiita.com/nakamurau1@github/items/13e081fcba1af0ca399f
Recommended Posts