Ich habe eine Rails 3-Anwendung, die eine lange Aufgabe von mehreren Abfragen an eine Datenbank durchführt, um Dokumente zu finden. Ich möchte dem Benutzer den Fortschritt der Abfrage anzeigen. Ich habe eine jquery-Funktion erstellt, die die jquery.ui.progressbar verwendet. Ich möchte den Fortschrittsbalken dynamisch aktualisieren, während der Dokumentensuch-Controller die Suchphrasen durchläuft. Ich muss wissen, wie man das Javascript dynamisch anruft, um das Fortschrittsbalken-Div in der Dokumentenansicht zu aktualisieren. Bitte lassen Sie mich wissen, wie Sie das Javascript vom Rails Controller aufrufen.Wiederholte Aktualisierung einer Seite div in Rails vom Controller
Antwort
Sie können keine Remote-Funktion von Ihrem Server aus aufrufen, es sei denn, sie antwortet auf eine Anforderung. Daher müssen Sie häufig Anfragen von der Anwendung an Ihren Server senden, den Fortschritt der Suche überprüfen und entsprechend reagieren. Wenn Sie nicht über mehr als 10 Sekunden sprechen, würde ich wirklich für einen Spinner gehen, da es viel einfacher und genauso intuitiv ist.
Edit:
Beispiele, wie Sie Ihre Seite in Reaktion auf Ajax-Polling
#some_controller.rb
def check_download_progress
#some_method
end
# javascript erb file. views/some_controller/check_download_progress.js.erb
# You can mix js and ruby and send it as a response to an ajax call; examples:
#check_download_progress.js.erb
<%- if @some_value.present? -%>
$('#progress_bar').addClass('<%= @some_value -%>');
<%- end -%>
#or simply call a function
my_remote_function(<%= @some_value -%>);
In Ihrer Rails-Aktion aktualisieren können Sie RJS verwenden:
# Your AJAX action in controller.
def update_progress_bar
render :update do |page|
page.call 'java_script_method_name', 'param1', 'param2', etc.
end
end
Danke für Ihre Antwort. Ich möchte keinen Prototyp verwenden. Weiß jemand, wie man das selbe mit unverbaubarem Javascript und jQuery macht? – user437969
- 1. Rails-Validierung vom Controller
- 2. Erstellen einer Seite innerhalb einer div Aktualisierung auf einen Klick
- 3. Automatische Aktualisierung einer Seite in Ruby on Rails
- 4. Rails - Einfügen von ausgewählten Elementen vom Controller in Teil
- 5. JQuery: div beim Laden der Seite ausblenden, bei submit show div ohne Aktualisierung der Seite
- 6. Rails-Parameter vom Controller können nicht in der Ansicht
- 7. Aktualisierung der Winkelsteuerung vom Dienst
- 8. JavaScript kann nicht vom Rails-Controller gerendert werden
- 9. Aktualisierung Div mit AngularJS
- 10. Prüfen, ob div in AngularJS vom Controller versteckt ist?
- 11. Winkelrufanweisung vom Controller
- 12. jQuery Aktualisierung nicht div
- 13. Überprüfen, ob der Datensatz vom Controller in Rails existiert
- 14. Aktualisierung angularjs Controller mit Websocket-Daten
- 15. Stop-Seite von erfrischend sobald Nachrichtenserver Erfolg empfangen vom Controller
- 16. Wie zeigt man ein bestimmtes Div in einer Ansicht vom Controller in Codeigniter?
- 17. Rails - Senden von JSONs an die Datenbank vom Controller
- 18. PHP Wert in einer Controller-Seite behoben
- 19. Live Aktualisierung div mit xlsx.js
- 20. Wie man auf wiederholte Taste auf einer Seite klickt?
- 21. URL vom Controller ändern?
- 22. Aktualisierung ListView Daten vom Server
- 23. Titanium - Trigger vom Controller zu einer Ansicht
- 24. AngularJS POST-Aktualisierung auf Datenbank in Rails
- 25. Hub-Methoden vom Controller verwenden?
- 26. Angular - Umschaltstatus vom Controller
- 27. MeteorJS.Auf der Aktualisierung einer Seite gehen die Suchergebnisse verloren
- 28. Pushing View Controller vom Kind View Controller
- 29. Div Aktualisierung funktioniert nicht - Jquery
- 30. Rails Beobachter Callbacks in Controller
Diese Aufgabe tut nicht in einem Formular-Tag ausgeführt. Gibt es eine andere Art und Weise? – user437969
Ich habe kein Formular-Tag erwähnt. Sie könnten zum Beispiel eine ID zu einem HTML-Element hinzufügen, deren Vorhandensein auf dem Dokument bereit feststellen und den Server abfragen, um den Status der Suche zu überprüfen. – mark
Ich entschuldige mich für das Missverständnis Sie antworten. Ich habe eine JavaScript-Funktion geschrieben, die abfragt und das Polling funktioniert. Ich muss nur einen Weg finden, um den Aktualisierungswert vom Controller zu übergeben. – user437969