Mit Rails UJS, wie Sie ein Remote-Formular von einer Funktion senden

8

Ich benutze Rails UJS. Ich habe ein Formular-Setup, um eine Fernübertragung wie folgt durchzuführen:

%Vor%

Ich versuche einen Weg zu finden, dieses Formular von einer JavaScript-Funktion zu senden. Ich habe es versucht:

%Vor%

aber das Problem dabei ist, dass es das Formular ohne Remote sendet, es auf dem Server veröffentlicht und aktualisiert die Seite. Irgendeine Idee warum das ist? Gibt es eine andere Möglichkeit, ein Remote-Formular zu senden?

Danke

    
AnApprentice 02.10.2012, 01:51
quelle

3 Antworten

17

Vielleicht wird für die Benutzer, die jquery-ujs verwenden (standardmäßig Rails 5.0 und niedriger), da Mikhail bereits beantwortet wurde, das benutzerdefinierte jquery-Ereignis ausgelöst, d. h .:

%Vor%

Für diejenigen, die 2017 auf diese Frage gestoßen sind und Rails 5.1 verwenden, wird die Antwort anders lauten. Rails 5.1 hat jquery als Abhängigkeit abgelegt und daher jquery-ujs durch eine komplett neu geschriebene rails-ujs ersetzt. Siehe: Ссылка

Als solches müssen Sie das richtige CustomEvent-Objekt auslösen in rails-ujs:

Im Moment gibt es keine veröffentlichte / empfohlene Vorgehensweise in der Dokumentation (a.k.a. RailsGuides), aber hier sind einige Optionen, die Sie verwenden könnten, wenn Sie sich den Quellcode von Rails ansehen:

  1. Verwenden Sie Rails.fire function:

    %Vor%
  2. Sie könnten auch programmatisch den Rails.handleRemote -Handler aufrufen (den, der tatsächlich Formulare mit data-remote=true über XHR sendet:

    %Vor%

Ich bevorzuge Option 1, weil es nur ein Wrapper ist, der neuere Web-API-Methoden verwendet, d. h. ein CustomEvent erstellt und es an das EventTarget via dispatchEvent weiterleitet.

    
padi 10.07.2017 01:36
quelle
14

Versuchen Sie, das Ereignis submit.rails auszulösen:

%Vor%     
Mikhail D 02.10.2012 06:11
quelle
0
___ answer12685320 ___

Versuchen Sie, das Ereignis %code% auszulösen:

%Vor%     
___ answer45002658 ___

Vielleicht wird für die Benutzer, die %code% verwenden (standardmäßig Rails 5.0 und niedriger), da Mikhail bereits beantwortet wurde, das benutzerdefinierte jquery-Ereignis ausgelöst, d. h .:

%Vor%

Für diejenigen, die 2017 auf diese Frage gestoßen sind und Rails 5.1 verwenden, wird die Antwort anders lauten. Rails 5.1 hat %code% als Abhängigkeit abgelegt und daher %code% durch eine komplett neu geschriebene %code% ersetzt. Siehe: Ссылка

Als solches müssen Sie das richtige CustomEvent-Objekt auslösen in rails-ujs:

Im Moment gibt es keine veröffentlichte / empfohlene Vorgehensweise in der Dokumentation (a.k.a. RailsGuides), aber hier sind einige Optionen, die Sie verwenden könnten, wenn Sie sich den Quellcode von Rails ansehen:

  1. Verwenden Sie %code% function:

    %Vor%
  2. Sie könnten auch programmatisch den %code% -Handler aufrufen (den, der tatsächlich Formulare mit %code% über XHR sendet:

    %Vor%

Ich bevorzuge Option 1, weil es nur ein Wrapper ist, der neuere Web-API-Methoden verwendet, d. h. ein %code% erstellt und es an das %code% via %code% weiterleitet.

    
___ tag123jquery ___ jQuery ist eine beliebte Cross-Browser-JavaScript-Bibliothek, die das DOM-Traversal (Document Object Model), die Ereignisbehandlung, Animationen und AJAX-Interaktionen erleichtert, indem die Diskrepanzen zwischen Browsern minimiert werden. Eine mit jQuery gekennzeichnete Frage sollte mit jQuery in Zusammenhang stehen, daher sollte jquery von dem fraglichen Code verwendet werden, und mindestens eine jquery-nutzungsbezogene Elemente müssen in der Frage enthalten sein. ___ tag123rubyonrails ___ Ruby on Rails ist ein Open-Source-Full-Stack-Webanwendungsframework, das in Ruby geschrieben wurde. Es folgt dem populären MVC-Framework-Modell und ist bekannt für seinen "convention over configuration" -Ansatz für die Anwendungsentwicklung. ___ qstntxt ___

Ich benutze Rails UJS. Ich habe ein Formular-Setup, um eine Fernübertragung wie folgt durchzuführen:

%Vor%

Ich versuche einen Weg zu finden, dieses Formular von einer JavaScript-Funktion zu senden. Ich habe es versucht:

%Vor%

aber das Problem dabei ist, dass es das Formular ohne Remote sendet, es auf dem Server veröffentlicht und aktualisiert die Seite. Irgendeine Idee warum das ist? Gibt es eine andere Möglichkeit, ein Remote-Formular zu senden?

Danke

    
___ tag123rubyonrails3 ___ Ruby on Rails ist ein in Ruby geschriebenes Open-Source-Web-Entwicklungs-Framework. Ruby on Rails folgt dem Prinzip der Konvention über die Konfiguration und befreit Sie davon, Dinge neu erfinden zu müssen, um produktiv zu bleiben. Verwenden Sie dieses Tag nur für Rails 3-spezifische Fragen und markieren Sie diese Fragen [ruby-on-rails]. ___ antwort12887625 ___

Versuchen Sie, selbst eine Ajax-Anfrage zu machen:

%Vor%

Auf diese Weise führen Sie eine POST-Anfrage mit den Formulardaten durch und führen die Antwort als Skript aus.

    
___ tag123ujs ___ UJS ist ein unauffälliger JavaScript-Adapter für jQuery, der vom Ruby on Rails-Projekt bereitgestellt wird. Bei Fragen zu unauffälligem JavaScript im Allgemeinen lesen Sie bitte das [de-visit-javascript] -Tag. ___ qstnhdr ___ Mit Rails UJS, wie Sie ein Remote-Formular von einer Funktion senden ___
arieljuod 14.10.2012 23:43
quelle