2012-10-09 32 views
0

我有一個屬性weight.subtotal,我希望自動更新它隨時發生更改(它會在模型​​上使用before_save回調進行更新)。如何使用AJAX更新一個屬性而不必使用任何重JS?

我看着pjax,但看起來太重了。我所希望發生的是,一旦得到改變,具有此一tddiv

<td><%= weight.subtotal %></td> 

要沒有頁面重載被自動地更新。

謝謝。

編輯1:最好是像「最佳就地」那樣的寶石,但不是依賴用戶更新值,而是監聽值是否已更改 - 以及何時更新 - 它會更新只是在頁面上的價值。

回答

1

無法拿出任何寶石,所以它的一切從零開始,它需要返回當前值,類似的方法,

/weights/get_subtotal/:id.:format 

我建議你剛剛吐出來的JSON這樣它可以很容易地被jquery解釋。

然後,你使用jQuery來輪詢該方法,如果它已被更改,請改變視圖中的值,如下所示。

function poll(){ 
    setTimeout(function(){ 
     $.ajax({ url: "/weights/get_subtotal/xx", success: function(data){ 

      //put code here to compare old td value 
      //with current value, and replace if different 

      //Setup the next poll recursively 
      poll(); 
     }, dataType: "xxxxx"}); 
    }, 10000); 
}; 
$(document).ready(function(){ 
    poll(); 
}); 

是否會很容易,如果你只是把權重的ID在ID爲TD,像,

<td id="weigth_<%= weight.id%>"><%= weight.subtotal %></td> 

希望它幫助。

+0

這是一個有趣的方法。謝謝! – marcamillion

相關問題