[Ruby on Rails] Unendliches Scrollen mit Gem Kaminari und Jscroll

Entwicklungsumgebung

ruby 2.5.7 Rails 5.2.4.3 OS: macOS Catalina

fließen

Einführung von 1 Edelstein 2 Einführung von jscroll 3 Bearbeiten Sie den Controller 4 Ansicht bearbeiten Bearbeiten Sie 5 js 6 CSS-Bearbeitung

Einführung von Edelstein

Gemfile


gem 'jquery-rails'
gem 'kaminari'

Terminal


$ bundle install
$ rails g kaminari:config
$ rails g kaminari:views default

app/assets/javascripts/application.js


//=erfordern jquery ← hinzugefügt
//= require jquery_ujs ← hinzugefügt
//= require activestorage
//= require turbolinks
//= require_tree .

Referenz: Kaminari [Ruby on Rails] Paging-Funktion eingeführt

Einführung von jscroll

In ① oder ② einführen.

①https://github.com/pklauzinski/jscroll/tree/master Nach dem Herunterladen der Zip-Datei von diesem GitHub jquery.jscroll.min.js in dist Speichern Sie es unter App / Asset / Javascripts.

(2) Verwenden Sie diese Option, wenn Sie in den Kopf schreiben.

python


<script src="https://cdnjs.cloudflare.com/ajax/libs/jscroll/2.4.1/jquery.jscroll.min.js"></script>

Beschreiben Sie nach der Einführung von ① oder ② wie folgt.

app/assets/javascripts/application.js


//= require jquery
//= require jquery_ujs
//= require jquery.jscroll.min.js ← hinzugefügt
//= require activestorage
//= require turbolinks
//= require_tree .

Controller bearbeiten

Durch Schreiben von .page (params [: page]) .per (20) Zeigt 20 Elemente.

app/controllers/posts_controller.rb


class PostsController < ApplicationController
  def index
    @posts = Post.page(params[:page]).per(20)
  end
end

Ansicht bearbeiten

Bearbeiten Sie den Klassennamen im div mit jQuery.

erb:app/viws/posts/index.html.erb


<div class="scroll-list jscroll">
  <% @posts.each do |post| %>
    <span><%= post.post_title %></span>
  <% end %>
  <%= paginate @posts %>
</div>

Js bearbeiten

Diesmal beim Scrollen zu den unteren 5% des Bildschirms Versuchen Sie, einen neuen zu laden.

app/assets/javascripts/application.js


$(window).on('scroll', function() {
  scrollHeight = $(document).height();
  scrollPosition = $(window).height() + $(window).scrollTop();
  if ( (scrollHeight - scrollPosition) / scrollHeight <= 0.05) {
    $('.jscroll').jscroll({
      contentSelector: '.scroll-list',
      nextSelector: 'span.next:last a'
    });
  }
});

CSS bearbeiten

app/assets/stylesheets/application.scss


nav.pagination {
  display: none;
}
.scroll-list {
  padding: 0;
}

Zusammenfassung

Unendliches Scrollen wird also auch auf Twitter und Instagram verwendet Wenn es viele Anzeigen gibt, sollte diese Funktion eingeführt werden.

Auf Twitter werden auch Technologien und Ideen hochgeladen, die nicht auf Qiita hochgeladen wurden Ich wäre Ihnen dankbar, wenn Sie mir folgen könnten. Klicken Sie hier für Details https://twitter.com/japwork

Recommended Posts

[Ruby on Rails] Unendliches Scrollen mit Gem Kaminari und Jscroll
[Ruby on Rails] Codeprüfung mit Rubocop-Airbnb
Hinweise zur Verwendung von FCM mit Ruby on Rails
Rubin und Edelstein
[Ruby on Rails] So melden Sie sich nur mit Ihrem Namen und Passwort mit dem Gem-Gerät an
Ruby on Rails ~ Grundlagen von MVC und Router ~
[Ruby on Rails] Hinzufügen und Löschen von Tags und Anzeigen von (Erfolgs- / Fehler-) Meldungen mit Ajax.
Ruby on Rails Elementary
Ruby on Rails Grundlagen
Ruby On Rails Association
[Ruby on Rails] Gemeinsame Verarbeitung zwischen Controllern (unter Verwendung von Konkaven)
Versuchen Sie es mit dem Ruby on Rails-Abfrageattribut
Ruby on Rails Lernrekord -2020.10.03
Portfolioerstellung Ruby on Rails
Ruby on Rails Einstellung der automatischen E-Mail-Sendefunktion (über Google Mail)
Ruby on Rails Lernrekord -2020.10.04
[Ruby on Rails] Debuck (bindend.pry)
Ruby on Rails Lernrekord -2020.10.05
Ruby on Rails Lernrekord -2020.10.09
Ruby on Rails lernen Rekord-2020.10.07 ①
Brechen Sie die Ruby on Rails-Migration ab
Zusammenfassung der Ruby on Rails-Validierung
Ruby on Rails Grundlegendes Memorandum
[Ruby on Rails] Verwenden Sie Cookies und zeigen Sie sie beim ersten Zugriff nur einmal an (mit jquery.cookie.js).
[Ruby on Rails] Ändere das Speicherziel von Gem Refile * Hinweis
(Ruby on Rails6) Erstellen einer Datenbank und Anzeigen in einer Ansicht
Erklärung von Ruby on Rails für Anfänger ⑤ ~ Datenbank bearbeiten und löschen ~
Dinge, an die Sie sich erinnern sollten, und Konzepte im Ruby on Rails-Tutorial
[Ruby on Rails] Leseversuch (: [],: Schlüssel)
Ruby on Rails-Variablen, konstante Zusammenfassung
Installation von Ruby + Rails unter Ubuntu 18.04 (rbenv)
[Ruby on Rails] Paging-Funktion eingeführt
Grundkenntnisse in Ruby on Rails
Progate Ruby on Rails5 Rückblick
Installieren Sie Ruby 2.5 unter CentOS 7 mit SCL
Verwendung von Ruby on Rails
(Ruby on Rails6) Gepostete Inhalte "löschen"
Ruby on Rails 6.0-Umgebungskonstruktionsnotiz
[Ruby on Rails] Erstellung der Bestätigungsseite
Ruby On Rails entwickelt Routing-Konflikte
[Ruby on Rails] Implementierung der Kommentarfunktion
Upgrade der Ruby- und Rails-Version des Projekts
[Ruby on Rails] Praktische Hilfsmethode
[Ruby on Rails] Stoppen Sie "Looping bis ..."
So erstellen Sie eine Abfrage mithilfe von Variablen in GraphQL [Verwenden von Ruby on Rails]
[Schienen] Verwalten Sie mehrere Modelle mit einem Edelstein
[Ruby on Rails] Suchfunktion (nicht ausgewählt)