Ich habe versucht, die Ajax-Verarbeitung der ähnlichen Funktion in Rails zu implementieren

Einführung

Ich hatte die Like-Funktion in Rails implementiert, aber als ich diese Funktion verwendete, traten die folgenden Probleme auf.

Aus diesem Grund habe ich beschlossen, die Ajax-Funktion hinzuzufügen, um die Benutzerfreundlichkeit ohne Seitenübergang zu verbessern.

Zuerst dachte ich, dass der beste Weg, es zu implementieren, darin bestand, JavaScript / jQuery zu verwenden, um die Ajax-Verarbeitung auszulösen, aber als ich es nachschlug, hatte Rails `link_to``` usw. Es wurde gesagt, dass die Ajax-Verarbeitung verwendet werden kann, indem der Methode von `remote: true``` hinzugefügt wird. Im Gegensatz zu der Implementierungsmethode, die ich zuerst dachte, war sie einfach, also habe ich sie sofort mit dieser Methode implementiert.

Annahme

Umgebung / Version

Implementierung

Lassen Sie zuerst `app / views / posts / show.html.erb``` die Schaltfläche" Gefällt mir "` `app / views / liks / _like.html.erb```` render`` ..

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


#···Kürzung

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

#···Kürzung

Fügen Sie `remote: true``` zu` delete und `` `post der Like-Funktion hinzu, um die Ajax-Funktion hinzuzufügen.

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 %>

Durch Hinzufügen können Sie die folgende Verarbeitung ausführen, nachdem Sie auf jeden Link geklickt haben.

-- delete Methode → `app / views / liks / destroy.js.erb``` Dateiausführung --``` post``` Methode → Führen Sie die Datei `app / views / liks / create.js.erb``` aus

Als nächstes ist die `js.erb```-Datei eine Methode von` Controller wie `` @ post oder `` @ like```, wie im folgenden Code gezeigt. Sie können die definierten Instanzvariablen verwenden. das ist bequem.

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

Was wurde gemacht

Das Ergebnis ist wie folgt. Ich konnte bestätigen, dass es ohne Seitenübergänge funktioniert.

like-ajax.gif

schließlich

Ich konnte es auf andere Weise anwenden und Follow-Funktionen und Kommentare implementieren. In Zukunft werde ich auch eine Suchfunktion erstellen, also werde ich auch Ajax verwenden.

Referenzartikel

Einfache Implementierung von Ajax (asynchrone Kommunikation) mit remote: true und js.erb in Rails! (Mit Demo der gleichen Funktion)

Recommended Posts

Ich habe versucht, die Ajax-Verarbeitung der ähnlichen Funktion in Rails zu implementieren
So implementieren Sie eine nette Funktion in Ajax mit Rails
Ich habe versucht, die ähnliche Funktion durch asynchrone Kommunikation zu implementieren
[Rails] Ich habe versucht, die Stapelverarbeitung mit der Rake-Task zu implementieren
Ich habe versucht, die Bildvorschau mit Rails / jQuery zu implementieren
Ich habe versucht, polymorph in Nogizaka zu implementieren.
Ich habe versucht, die Sitzung in Rails zu organisieren
So implementieren Sie eine ähnliche Funktion in Rails
Ich habe versucht, die Firebase-Push-Benachrichtigung in Java zu implementieren
Ich habe versucht, mit HCE-F von Android eine Funktion zu implementieren, die Felica Lite entspricht
Implementierung einer ähnlichen Funktion (Ajax)
Ich habe versucht, eine Anmeldefunktion mit Java zu erstellen
Ich möchte eine Funktion in der Rails Console definieren
Ich habe versucht, die Methode der gegenseitigen Teilung von Eugrid in Java zu implementieren
[Rails] Implementierung einer ähnlichen Funktion
Rails-API-Modus Ich habe versucht, die Mehrfachsuchfunktion für Schlüsselwörter mithilfe von Arrays und iterativer Verarbeitung zu implementieren.
Ich habe versucht, eine Nachrichtenfunktion der Rails Tutorial-Erweiterung (Teil 1) zu erstellen: Erstellen Sie ein Modell
Implementierung der Rails-Sortierfunktion (angezeigt in der Reihenfolge der Anzahl der Gleichen)
Ich habe versucht, eine Webanwendung voller Fehler mit Kotlin zu implementieren
Ich habe einen RESAS-API-Client in Java erstellt
[Rails] Asynchrone Implementierung der Like-Funktion
[Rails] Über die Implementierung der Like-Funktion
Implementieren Sie eine einfache Anmeldefunktion in Rails
Implementieren Sie die CSV-Download-Funktion in Rails
Implementierung einer ähnlichen Funktion in Java
Ich habe versucht, eine Antwortfunktion für die Rails Tutorial-Erweiterung (Teil 3) zu erstellen: Ein Missverständnis der Spezifikationen wurde behoben
Ich habe versucht, die Cache-Funktion von Application Container Cloud Service in der lokalen Umgebung zu entwickeln
Ich habe versucht, eine Nachrichtenfunktion für die Erweiterung Rails Tutorial (Teil 2) zu erstellen: Erstellen Sie einen Bildschirm zum Anzeigen
[Rails] Eine einfache Möglichkeit, eine Selbsteinführungsfunktion in Ihrem Profil zu implementieren
Daten sortieren Absteigend, aufsteigend / Schienen
Ich habe versucht, Code wie eine Typdeklaration in Ruby zu schreiben
Ich habe versucht, mit Rails eine Gruppenfunktion (Bulletin Board) zu erstellen
So implementieren Sie Suchfunktionen in Rails
Ich habe versucht, Processing auf VS Code zu migrieren
[Rails] Implementierung einer mehrschichtigen Kategoriefunktion unter Verwendung der Abstammung "Ich habe versucht, ein Fenster mit Bootstrap 3 zu erstellen"
Ich habe versucht, das Iterator-Muster zu implementieren
So implementieren Sie Ranking-Funktionen in Rails
Ich habe versucht, Selen wie JQuery zu verwenden
So implementieren Sie die asynchrone Verarbeitung in Outsystems
[Ruby on Rails] Implementierung einer ähnlichen Funktion
Ich habe versucht, ein übergeordnetes Wertklasseobjekt in Ruby zu erstellen
[Rails] Ich möchte Daten verschiedener Modelle in einem Formular senden
[Rails] Ich habe versucht, eine Transaktion zu implementieren, die mehrere DB-Prozesse kombiniert
[iOS] Ich habe versucht, mit Swift eine insta-ähnliche Verarbeitungsanwendung zu erstellen
Ich habe versucht, den CPU-Kern mit Ruby voll auszunutzen
"Lehrer, ich möchte im Frühjahr eine Anmeldefunktion implementieren" ① Hallo Welt
[Rails] Ich habe versucht, die Version von Rails von 5.0 auf 5.2 zu erhöhen