0

我有一个属性weight.subtotal,我想在它发生变化时自动更新(它通过模型上的 before_save 回调进行更新)。

我看了看 pjax,但这似乎太重了。我想要发生的事情是,一旦改变,那个tddiv那个有这个:

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

无需重新加载页面即可自动更新。

谢谢。

编辑1:最好是像'best-in-place'这样的gem,但不是依靠用户来更新值,而是监听值是否发生了变化——当它发生变化时,它只更新页面上的那个值.

4

1 回答 1

1

想不出任何 gem,所以一切从头开始,它需要一个返回当前值的方法,比如,

/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 放入 td 的 id 中,这会很容易,例如,

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

希望能帮助到你。

于 2012-10-09T02:56:27.820 回答