J'ai essayé d'implémenter le traitement Ajax de la fonction similaire dans Rails

introduction

J'avais implémenté la fonction Like dans Rails, mais lorsque j'ai utilisé cette fonction, les problèmes suivants se sont produits.

Par conséquent, j'ai décidé d'ajouter la fonction Ajax pour améliorer la convivialité sans transition de page.

Au début, je pensais que la meilleure façon de l'implémenter était d'utiliser JavaScript / jQuery pour lancer le processus Ajax, mais quand je l'ai recherché, Rails avait link_to '', etc. Il a été dit que le traitement Ajax peut être utilisé en ajoutant `` remote: true``` à la méthode de. Contrairement à la méthode de mise en œuvre que je pensais au début, c'était simple, donc je l'ai immédiatement implémentée avec cette méthode.

supposition

Environnement / version

la mise en oeuvre

Tout d'abord, laissez app / views / posts / show.html.erb '' créer le bouton app / views / likes / _like.html.erb '' à render``` ..

erb:app/views/posts/show.html.erb


#···réduction

<div class="post-like mr-auto">
  <%= render partial: 'likes/like', locals: { post: @post, like: @like } %>
</div>

#···réduction

Ajoutez la fonction Ajax en ajoutant remote: true aux arguments de la fonction similaire `` `delete et post```.

erb:app/views/likes/_like.html.erb


<% if current_user.already_liked?(post) %>
  <%= link_to 'Like', post_like_path(post, like), method: :delete, class:'post-like__cancel', remote: true %>
<% else %>
  <%= link_to 'Like', post_likes_path(post), method: :post, class:'post-like__enable', remote: true %>
<% end %>

En l'ajoutant, vous pourrez exécuter le traitement suivant après avoir cliqué sur chaque lien.

Ensuite, le fichier js.erb est une méthode de `` Controller telle que @ post ou `` @ like comme indiqué dans le code ci-dessous Vous pouvez utiliser les variables d'instance définies. c'est pratique.

erb:app/views/likes/destroy.js.erb


$('.post-like').html('<%= j(render partial: 'likes/like', locals: { post: @post, like: @like }) %>');

erb:app/views/likes/create.js.erb


$('.post-like').html('<%= j(render partial: 'likes/like', locals: { post: @post, like: @like }) %>');

Ce qui a été fait

Le résultat est le suivant. J'ai pu confirmer que cela fonctionnait sans transitions de page.

like-ajax.gif

enfin

De plus, j'ai pu implémenter une fonction de suivi et des commentaires. À l'avenir, je créerai également une fonction de recherche, donc j'utiliserai également Ajax.

Article de référence

Implémentez facilement Ajax (communication asynchrone) avec remote: true et js.erb dans Rails! (Avec démo de fonction similaire)

Recommended Posts

J'ai essayé d'implémenter le traitement Ajax de la fonction similaire dans Rails
Comment implémenter une fonctionnalité intéressante dans Ajax avec Rails
J'ai essayé d'implémenter la fonction similaire par communication asynchrone
[Rails] J'ai essayé d'implémenter le traitement par lots avec la tâche Rake
J'ai essayé d'implémenter la fonction de prévisualisation d'image avec Rails / jQuery
J'ai essayé d'implémenter des relations polymorphes à Nogizaka.
J'ai essayé d'organiser la session en Rails
Comment implémenter une fonctionnalité similaire dans Rails
J'ai essayé d'implémenter la notification push Firebase en Java
J'ai essayé d'implémenter une fonction équivalente à Felica Lite avec HCE-F d'Android
Implémentation d'une fonction similaire (Ajax)
J'ai essayé de créer une fonction de connexion avec Java
Je souhaite définir une fonction dans la console Rails
J'ai essayé d'implémenter la méthode de division mutuelle d'Eugrid en Java
[Rails] Implémentation d'une fonction similaire
Mode API Rails J'ai essayé d'implémenter la fonction de recherche multiple par mot-clé à l'aide de tableaux et d'un traitement itératif.
J'ai essayé de créer une fonction de message de l'extension Rails Tutorial (Partie 1): Créer un modèle
Mise en place de la fonction de tri des rails (affichés par ordre de nombre de like)
J'ai essayé d'implémenter une application web pleine de bugs avec Kotlin
J'ai créé un client RESAS-API en Java
[Rails] Implémentation asynchrone de la fonction similaire
[Rails] À propos de la mise en œuvre de la fonction similaire
Implémenter une fonction de connexion simple dans Rails
Implémenter la fonction de téléchargement CSV dans Rails
Implémentation d'une fonction similaire en Java
J'ai essayé de faire une fonction de réponse de l'extension Rails Tutorial (Partie 3): Correction d'un malentendu des spécifications
J'ai essayé de développer la fonction de cache d'Application Container Cloud Service dans l'environnement local
J'ai essayé de créer une fonction de message pour l'extension Rails Tutorial (Partie 2): Créer un écran à afficher
[Rails] Un moyen simple d'implémenter une fonction d'auto-introduction dans votre profil
Tri des données Décroissant, croissant / Rails
J'ai essayé d'écrire du code comme une déclaration de type en Ruby
J'ai essayé de créer une fonction de groupe (babillard) avec Rails
Comment implémenter la fonctionnalité de recherche dans Rails
J'ai essayé de migrer le traitement vers VS Code
[Rails] Implémentation de la fonction de catégorie multicouche en utilisant l'ascendance "J'ai essayé de créer une fenêtre avec Bootstrap 3"
J'ai essayé d'implémenter le modèle Iterator
Comment implémenter la fonctionnalité de classement dans Rails
J'ai essayé d'utiliser Selenium comme JQuery
Comment implémenter le traitement asynchrone dans Outsystems
[Ruby on rails] Implémentation d'une fonction similaire
J'ai essayé de créer une classe parent d'objet de valeur dans Ruby
[Rails] Je souhaite envoyer des données de différents modèles dans un formulaire
[Rails] J'ai essayé d'implémenter une transaction qui combine plusieurs processus DB
[iOS] J'ai essayé de créer une application de traitement de type insta avec Swift
J'ai essayé d'utiliser pleinement le cœur du processeur avec Ruby
"Professeur, je souhaite implémenter une fonction de connexion au printemps" ① Hello World
[Rails] J'ai essayé de faire passer la version de Rails de 5.0 à 5.2