Dies ist eine Methode zum Hinzufügen einer Paginierungsfunktion, nachdem die Anzahl der Likes in absteigender Reihenfolge sortiert wurde. Es fiel mir schwer, es umzusetzen, deshalb werde ich es als Memorandum belassen.
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: (Nummer, die Sie auf einer Seite anzeigen möchten))
Die Paginate-Methode ist für Arrays standardmäßig nicht verfügbar. Erstellen Sie eine Datei unter config / initializers und fügen Sie require'will_paginate / array 'hinzu.
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