Ich baue meine erste Rails-App und möchte einen Like-Button implementieren, um Posts zu mögen. Die meisten Ressourcen, die ich dazu finden kann, beinhalten die Verwendung von AJAX. Ich habe mich gefragt, ob es eine Möglichkeit gibt, eine ähnliche Schaltfläche zu implementieren, ohne AJAX zu verwenden. HierIst es möglich, eine ähnliche Schaltfläche ohne AJAX zu erstellen?
Antwort
ist die Lösung: Es laden Sie Ihre Seite
- Sagen wir zur Zeit Sie sind auf dem
posts/index.html.erb
Seite, wo alleposts
zeigen und auch in jedem Post gibt es eine wie Taste. Erstellen Sie einen neuen Controller namens
LikeController.rb
, der Likes für den Beitrag erstellt/entfernt. Machen Sie es in Ihren Routen zu einer verschachtelten Ressource, wie: Es wird besser identifizieren, welcher Post den gleichen Button bekommen hat.resources :posts do resources :likes end
Erstellen Sie zwei Methoden
create
unddelete
in der neu geschaffenen Controller.- In Ihren Posts
like
Button erstellen Sie einen Link für diecreate
Methode über diepost_id
. - In der
create
Methode erstellen Sie die eine neueLike
für diesen Beitrag. Post kann von derparams[:post_id]
gefunden werden, die Sie in der gleichen Link weitergegeben haben. - Nach der erfolgreichen Erstellung des neuen
Like
Umleitung zuback
Sie können von Faye machen WebSockets eine ähnliche Anforderung an eine JavaScript-Datei und Update zu senden, die dynamisch zählen möchten. Beobachten Sie einen Rails-Cast für Faye-Websockets und versuchen Sie, aus Ihrer Sicht eine Sendeanforderung zu implementieren. Ich bin sicher, dass es die Arbeit machen wird, die Sie wollen.
Sie können dies ohne Ajax tun (obwohl ich nicht sicher bin, warum Sie diese Einschränkung auferlegen).
Haben Sie einen unsichtbaren iframe auf der Seite und lassen Sie Ihre Schaltfläche wie ein Formular senden, deren Ziel der iframe ist. Durch das Senden des Formulars (d. H. Klicken auf die Schaltfläche) wird jetzt der Rahmen und nicht die gesamte Seite neu geladen. Inhalt im Frame kann mit der Host-Seite kommunizieren (entweder Methoden direkt unter window.parent
aufrufen oder postMessage
verwenden), damit Sie Zähler auf der Seite und ähnlichem aktualisieren können.
- 1. Ist es möglich, typensichere Knoten-ähnliche Callbacks zu erstellen?
- 2. Ist es möglich, eine ListViewGroup zu erstellen
- 3. Ist es möglich, das Spotfire-Skriptfenster zu öffnen, ohne durch eine Schaltfläche zu navigieren?
- 4. Ist es möglich, GIT für UUID-ähnliche Bezeichner zu verwenden?
- 5. Android: Ist es möglich, ein SurfaceTexture ohne SurfaceView zu erstellen?
- 6. Ist es möglich, Ansichten ohne XML in Android zu erstellen?
- 7. Ist es möglich, ein Polymer-Element ohne HTML zu erstellen?
- 8. Ist es möglich, HTML5-Anwendungen ohne einen Server zu erstellen?
- 9. Ist es möglich, ActionMode Callback ohne CAB zu erstellen?
- 10. OCaml ist es möglich, einzelne zu erstellen, wenn (ohne sonst)
- 11. Ist es möglich, eine Schaltfläche zu einer Bildlaufansicht hinzuzufügen?
- 12. Ist es möglich, Portable VM zu erstellen?
- 13. Ist es möglich, GStreamer ohne eine GLib Hauptschleife zu verwenden?
- 14. Ist es möglich, tab-ähnliche Funktionen zu tmux-Fenstern hinzuzufügen?
- 15. Ist es möglich, eine Zurück-Schaltfläche für eine JavaScript/HTML-Diashow/ein Karussell zu erstellen?
- 16. Ist es möglich, eine Suchmaschine für meine Website zu erstellen, ohne eine Datenbank zu haben?
- 17. Ist es möglich, eine "bedingte" FMU mit Modelica zu erstellen?
- 18. Ist es möglich, eine barrierefreie Form ohne einen Submit-Button zu erstellen?
- 19. Ist es möglich, benutzerdefinierte Geofence zu erstellen?
- 20. Ist es möglich runmode-spezifische clientlib zu erstellen?
- 21. Ist es möglich, einen Vorlagenalias zu erstellen?
- 22. Ist es möglich, transparente Leinwand zu erstellen
- 23. Ist es möglich, mit nur CSS eine Schaltfläche zu erstellen, die nach unten zeigt (Bild eingeschlossen)?
- 24. Es ist möglich, Daten an EventArgs zu übergeben, ohne eine abgeleitete Klasse zu erstellen?
- 25. Ist es möglich, einen Pull zu erstellen, um ohne eine Tabellenansicht zu aktualisieren?
- 26. Ist es möglich, eine Karte zu erstellen, ohne den Klassennamen `Map` zu codieren?
- 27. Ist es möglich, eine native Ubuntu-App zu erstellen, ohne das qt-Framework zu verwenden?
- 28. Ist es möglich, eine Schaltfläche innerhalb der Eingabesteuerung hinzuzufügen?
- 29. Ist es möglich, eine Windows-Verknüpfung mit PHP zu erstellen?
- 30. Ist es möglich, eine Eigenschaft in Javascript zu erstellen?
Was möchten Sie mit Ihrem Like-Button machen? –
geben Sie einfach an, dass der Beitrag gemocht wurde und erhöhen Sie die Anzahl der Likes, die der Beitrag hat –
Wenn ein Benutzer Ihren Beitrag mögen möchte. Wie wirst du das ohne AJAX implementieren? –