Wie kann man den Wert in Schienen regelmäßig abrufen / aktualisieren?

9

Nehmen wir ein Szenario:

%Vor%
  • Der Benutzer hat show.html.erb page
  • besucht
  • show.html.erb hole den Wert von database mit <%= @post.value %> .
  • Zähler gestartet und jede Iteration des Zählers ist für 10 seconds .
  • Nach jedem 10 seconds wollte ich @post.value mit utility class ändern.
  • Aktualisieren Sie die @post.value in der Datenbank.
  • Aktualisieren Sie show.html.erb automatisch und <%= @post.value %> zeigt den aktualisierten Wert
  • an
  • Der obige Prozess wird in einer Schleife ausgeführt, bis der Benutzer zu anderen Seiten wechselt.

Wenn ich das Problem im Code vereinfachen muss, dann würde es das mögen:

Seite anzeigen

%Vor%

Controller-Methode

%Vor%

Hilfsklasse

Ich möchte die post.value auf der Grundlage der in dieser Klasse geschriebenen Methode aktualisieren. Pseudocode:

%Vor%

Fragen

  • Wo muss ich den Schalter stellen? Client-Seite oder Server-Seite? Ich möchte background jobs nicht in Rails verwenden.
  • Welche Änderungen muss ich in show method vornehmen, damit nach jeder Intervallseite automatisch aktualisiert wird und der aktualisierte Wert in @post.value ?
  • übergeben wird?

Danke für Ihre Hilfe!

    
Amit Pal 01.07.2015, 04:02
quelle

2 Antworten

2

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

    
Drew 08.07.2015 02:19
quelle
1

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.

    
Glupo 02.07.2015 10:38
quelle