2011-01-12 6 views
1

Ich versuche derzeit, button_to zu verwenden, um eine Aktualisierung auf einen Datensatz auszulösen. Da die AJAX-Anfrage einige Zeit in Anspruch nimmt, werde ich die UI-Effekte der Anfrage simulieren, indem ich die Benutzeroberfläche vor dem Senden der Anfrage aktualisiere. Nach this post, die etwas Ähnliches für link_to ausführt.Rails 3 - Binden Pre-AJAX Request

Aus meiner Sicht habe ich:

button_to "Submit", my_class_path, :remote => true, :class => "my_class", :method => :get 

In application.js Ich habe folgendes:

jQuery(function($) { 
    $("input.my_class").bind("ajax:loading", function(){ 
    alert("Hello World!"); 
    }); 
}); 

Das Ereignis wird entweder nicht gefeuert oder ich bin Bindung nicht richtig zu. Wie gehe ich mit der Pre-AJAX-Anfrage von button_to um?

Und nebenbei, gibt es eine gute Möglichkeit, Javascript-Ereignisse zu sehen, wie sie gefeuert werden?

Antwort

2

könnte das Problem sein, dass button_to so etwas wie das schafft:

<form method="post" action="/some_action" data-remote="true" class="button_to"> 
<div> 
    <input name="_method" type="hidden" value="delete"> 
    <input class="my_class" type="submit" value="Submit"> 
    <input name="authenticity_token" type="hidden" value="asdfasdfasdfsafasdfasdfas="> 
</div> 
</form> 

Aber nach rails.js, es sieht aus wie der Ajax-Request an die haltige Form gebunden wird:

$('form[data-remote]').live('submit', function (e) { 
    $(this).callRemote(); 
    e.preventDefault(); 
}); 

So in essense, der Eingabeknopf übermittelt nur das Formular, das der rails.js-Code erfasst und verwendet, um den Ajaxanruf durchzuführen. Dies bedeutet wahrscheinlich, dass Sie direkt an das Formular der Schaltfläche binden müssen. Etwas wie dieses:

$("input.my_class").parents('form[data-remote]').bind("ajax:loading", function(){ 
    alert("Hello World!"); 
}); 
+0

Arbeitete wie ein Charme! Vielen Dank! –