2011-01-12 74 views
1

我目前正在嘗試使用button_to來觸發對記錄的更新。由於AJAX請求需要一些時間,因此我將通過在發送請求之前更新UI來模擬請求的UI效果。跟在this post之後,它會爲link_to執行類似的操作。Rails 3 - 綁定預AJAX請求

在我看來,我有:

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

在application.js中我有以下幾點:

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

的事件不是沒有被解僱或者說我沒有正確地綁定到它。我如何處理來自button_to的預AJAX請求?

另外,有沒有一種很好的方式看到JavaScript事件,因爲他們被解僱?

回答

2

的問題可能是button_to創造這樣的事情:

<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> 

但根據rails.js,它看起來像Ajax請求被綁定到包含窗體:

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

所以在本質上,輸入按鈕只提交表單,rails.js代碼捕獲並用它來執行ajax調用。這可能意味着你必須直接綁定到按鈕的表單。像這樣的東西:

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

工作就像一個魅力!謝謝! – 2011-01-12 16:24:27