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