Ich habe eine Idee und ein Problem, auf das ich keine Antwort oder Lösung finden kann. Einige Informationen, falls erforderlich, später oder hilfreich:
Ok, also habe ich eine Einstellungsseite, auf der ich individuelle Einstellungen aktualisieren kann, indem ich sie unter Verwendung von best_in_place edge editiere. Funktioniert gut. Glücklich damit.
Einige der Einstellungen sind miteinander verbunden, dh ich muss sie addieren oder addieren. Als hilfreicher Tipp für den Benutzer, meiner Meinung nach, gibt es neben dem In-Place-Formular für diese Einstellungen auch einen berechneten Wert.
Nun möchte ich natürlich, dass dieser Wert zusammen mit dem Attribut selbst aktualisiert wird. Ich kann keinen Weg finden, das zu tun.
Wenn ich es mit dem: data = & gt; es funktioniert, aber ich bekomme den alten und nicht den neuen Wert, also ist meine Sicht immer "1 Schritt zurück".
Ich habe auch versucht mit update.js.erb und _test.html.erb teilweise, aber JavaScript-Datei funktioniert nicht. Es ist wie es nicht existiert. Ich habe doppelte, dreifache überprüft, wo es zu setzen und es ist OK (app / views / controller / _partial.html.erb)
Also. Ziemlich einfache Frage wäre; Wie kann ich auf einen aktualisierten Wert zugreifen und ihn verwenden, um die Berechnungen zu aktualisieren? Ich persönlich denke, ich sollte mit der partiellen und js-Datei gehen - aber ich habe keine Ahnung, warum JS-Datei nicht abgeholt wird. Irgendeine Idee dazu?
Wenn es andere Optionen gibt, würde ich den Hinweis mehr als zu schätzen wissen.
Danke!
- EDIT (Code hinzugefügt)
anzeigen:
%Vor%settings_controller.rb:
%Vor%update.js.erb:
%Vor%_update.html.erb:
%Vor%- EDIT 2:
OK, anscheinend ist es möglich, etwas so zu machen, wie ich es möchte:
%Vor%in Kombination mit
%Vor%& amp;
%Vor%Aber hier endet es für mich. Ich weiß nicht, wie man Rendern verwendet: json = & gt; {"Modell" = & gt; @model} in meinem Fall, da es in Kombination mit format.json {respond_with_bip (@s)} gemacht werden muss.
Wo setze ich render in den Controller? Derzeit bekomme ich 500 interne Serverfehler, die dies als Antwort versuchen.
Ich habe diese Lösung hier gefunden.
Danke !!
Sie können jQuery verwenden, um das dom für das Element zu analysieren, das sich am besten geändert hat, und von dort den aktualisierten Wert abrufen. Zum Beispiel, von Ihnen haben diesen Code (haml)
%Vor%Dann würde Ihr Rückruf so aussehen (coffeescript)
%Vor%Sie können sogar den neuen Wert mit jQuery nachschlagen. Im Kontext des Callback-Handlers repräsentiert "this" das Element, von dem aus der Aufruf erfolgte, also könnten Sie einfach
tun %Vor%und erhalte den neuen Wert auf diese Weise zum anderen Widget. Meine Vermutung ist, dass das Ereignis, das vom Ajax-Handler zurückgegeben wird, auch currentTarget hat, was wiederum das Widget wäre, das die Ajax-Anfrage ausgelöst hat. Meine einzige Sorge bei all dem wäre, dass Ihr Erfolgs-Handler irgendwie den Best-in-Place-Handler schlägt, und Sie erhalten das Widget, bevor es aktualisiert wird. Bei meinen Tests ist das nie passiert.
Ich habe gerade eine Frage wie folgt beantwortet:
Aber anstatt nur den Wert einzufügen, müssen Sie die benötigte Summe verwenden.
Tags und Links ruby-on-rails best-in-place