[RUBY] Sortieren Sie nach der Anzahl der Likes und der Seitennation

Einführung

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.

Verfahren

Installieren Sie gem

gem 'will_paginate'
gem 'bootstrap-will_paginate'

Definieren Sie eine Zuordnung

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

Definieren Sie eine Klassenmethode

post.rb


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

Denken Sie über die Steuerung nach

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'

In Ansicht anzeigen

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

Artikel, die ich als Referenz verwendet habe

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

Recommended Posts

Sortieren Sie nach der Anzahl der Likes und der Seitennation
[Rails] Rangfolge und Paginierung in der Reihenfolge der Likes
[Rails] Verwenden Sie das Pulldown-Feld, um die Post-Liste nach Datum oder Anzahl der Likes zu sortieren.
Implementierung der Pagenationsfunktion
Informationen zum Abschneiden von Zeichenfolgen um die Anzahl der Bytes unter Android
Vereinfachte Version der Zahlenberechnung durch Sammeln von Informationen in einer Instanz