[Ruby on Rails] Défilement infini à l'aide de gem kaminari et jscroll

Environnement de développement

ruby 2.5.7 Rails 5.2.4.3 OS: macOS Catalina

couler

Présentation de 1 gemme 2 Introduction de jscroll 3 Modifier le contrôleur 4 Modifier la vue Modifier 5 js 6 édition CSS

Introduction de gemme

Gemfile


gem 'jquery-rails'
gem 'kaminari'

Terminal


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

app/assets/javascripts/application.js


//=nécessite jquery ← ajouté
//= require jquery_ujs ← ajouté
//= require activestorage
//= require turbolinks
//= require_tree .

Référence: kaminari [Ruby on Rails] Fonction de pagination introduite

Introduction de jscroll

Introduisez en ① ou ②.

①https://github.com/pklauzinski/jscroll/tree/master Après avoir téléchargé le fichier zip depuis ce GitHub, jquery.jscroll.min.js dans dist Enregistrez-le sous app / asset / javascripts.

(2) Utilisez ceci pour écrire dans la tête.

python


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

Après avoir introduit ① ou ②, décrivez comme suit.

app/assets/javascripts/application.js


//= require jquery
//= require jquery_ujs
//= require jquery.jscroll.min.js ← ajouté
//= require activestorage
//= require turbolinks
//= require_tree .

Édition du contrôleur

En écrivant .page (params [: page]) .per (20) Affiche 20 éléments.

app/controllers/posts_controller.rb


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

Modifier vue

Modifiez le nom de la classe dans le div avec 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>

Édition de js

Cette fois, lors du défilement vers les 5% inférieurs de l'écran Essayez d'en charger un nouveau.

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'
    });
  }
});

Modifier le CSS

app/assets/stylesheets/application.scss


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

Résumé

Le défilement infini est également utilisé sur Twitter et Instagram, donc S'il y a de nombreux affichages, c'est une fonction qu'il faut introduire.

De plus, sur Twitter, les technologies et les idées qui n'ont pas été téléchargées sur Qiita sont également téléchargées, donc Je vous serais reconnaissant si vous pouviez me suivre. Cliquez ici pour plus de détails https://twitter.com/japwork

Recommended Posts

[Ruby on Rails] Défilement infini à l'aide de gem kaminari et jscroll
[Ruby on Rails] Vérification du code à l'aide de Rubocop-airbnb
Remarques sur l'utilisation de FCM avec Ruby on Rails
Rubis et gemme
[Ruby on Rails] Comment se connecter avec seulement votre nom et mot de passe en utilisant le bijou
Ruby on Rails ~ Principes de base de MVC et du routeur ~
[Ruby on Rails] Ajoutez et supprimez des balises et affichez les messages (succès / erreur) en utilisant ajax.
Ruby on Rails élémentaire
Principes de base de Ruby on Rails
Association Ruby On Rails
[Ruby on Rails] Traitement commun entre les contrôleurs (à l'aide de concerts)
Essayez d'utiliser l'attribut de requête Ruby on Rails
Record d'apprentissage de Ruby on rails -2020.10.03
Création de portfolio Ruby on Rails
Ruby on Rails Paramètre de la fonction d'envoi automatique des e-mails (avec Gmail)
Record d'apprentissage Ruby on rails -2020.10.04
[Ruby on Rails] Debuck (binding.pry)
Record d'apprentissage de Ruby on rails -2020.10.05
Record d'apprentissage de Ruby on rails -2020.10.09
Record d'apprentissage Ruby on rails-2020.10.07 ①
Annuler la migration de Ruby on Rails
Résumé de la validation Ruby on Rails
Mémorandum de base Ruby on Rails
[Ruby on Rails] Utilisez les cookies et ne les affichez qu'une seule fois lors de l'accès pour la première fois (en utilisant jquery.cookie.js)
[Ruby on Rails] Changez la destination de sauvegarde du recueil de gemmes * Remarque
(Ruby on Rails6) Créer une base de données et l'afficher dans une vue
Explication de Ruby on rails pour les débutants ⑤ ~ Modifier et supprimer la base de données ~
Points à retenir et concepts dans le didacticiel Ruby on Rails
[Ruby on Rails] Read try (: [] ,: key)
Variables Ruby on Rails, résumé constant
Installation de Ruby + Rails sur Ubuntu 18.04 (rbenv)
[Ruby on Rails] Introduction de la fonction de pagination
Connaissance de base de Ruby on Rails
Progatez Ruby on Rails
Installez Ruby 2.5 sur CentOS 7 en utilisant SCL
Comment utiliser Ruby on Rails
(Ruby on Rails6) "Effacer" le contenu publié
Mémo de construction de l'environnement Ruby on Rails 6.0
[Ruby on Rails] Création de la page de confirmation
Ruby On Rails conçoit un conflit de routage
[Ruby on Rails] Implémentation de la fonction de commentaire
Mise à niveau de la version du projet Ruby and Rails
[Ruby on Rails] Méthode d'aide pratique
[Ruby on Rails] Arrêtez de "boucler jusqu'à ce que ..."
Comment créer une requête à l'aide de variables dans GraphQL [Utilisation de Ruby on Rails]
[Rails] Gérez plusieurs modèles à l'aide de la gemme de devise
[Ruby on Rails] Fonction de recherche (non sélectionnée)