Nehmen wir ein Szenario:
%Vor%show.html.erb
page show.html.erb
hole den Wert von database
mit <%= @post.value %>
. 10 seconds
. 10 seconds
wollte ich @post.value
mit utility
class ändern. @post.value
in der Datenbank. show.html.erb
automatisch und <%= @post.value %>
zeigt den aktualisierten Wert Wenn ich das Problem im Code vereinfachen muss, dann würde es das mögen:
Ich möchte die post.value
auf der Grundlage der in dieser Klasse geschriebenen Methode aktualisieren. Pseudocode:
Fragen
background jobs
nicht in Rails verwenden. show
method vornehmen, damit nach jeder Intervallseite automatisch aktualisiert wird und der aktualisierte Wert in @post.value
? Danke für Ihre Hilfe!
Ich würde mit Firebase gehen, anstatt den Server abzufragen.
Wenn Sie jedoch den Server regelmäßig abfragen möchten, würde ich nur eine JavaScript-Methode verwenden, die alle 10 Sekunden oder in jedem beliebigen Intervall ausgeführt wird und alle asynchronen Daten abruft und anschließend aktualisiert das DOM.
Auch Rubin-Wrapper für firebase api , falls das von Interesse sein könnte
Ich würde sagen, der einfachste Ansatz wäre ActionController :: Live . Wenn Sie es verwenden, können Sie SSE (Server Sent Event) an Ihren Client senden, während Sie js Skript haben, um Ihre <%= @post.value %>
zu erfassen und zu aktualisieren. Hier ist ein ziemlich nettes Handbuch zur Verwendung.
Aus meiner Sicht ist der beste Weg, Dinge zu implementieren, die Sie tun möchten, etwas wie Faye . Es ist ein Publish / Subscribe-Messaging-System, mit dem Sie Ihren Client mit neuen Daten aktualisieren können, sobald er angezeigt wird, z. B. können Sie in Ihrem Modell after_save
festlegen und ein Update für alle abonnierten Clients veröffentlichen. Und natürlich gibt es ein Juwel, das auch faye genannt wird, um seine Verwendung zu verpacken.
Tags und Links ruby ruby-on-rails model-view-controller ajax ruby-on-rails-4