如何使用$ .ajax()以设定的间隔更新Rails部分?

时间:2012-02-26 15:49:07

标签: ruby-on-rails-3 jquery

我正在Rails 3.1中构建一个CoverItLive的克隆,并希望自动更新注释流。我在视图中使用部分显示注释。关于在Rails中使用UJS和AJAX机智表单或按钮或链接有很多信息,但我找不到任何具体的例子来说明我需要做的事情。

我假设.ajax()是最好的方法,但我之前从未使用它,也不确定在使用此特定功能时是否需要提供.js.erb文件?我可以让控制器将JSON发送回客户端并从那里开始,或者在rails中有更好的方法吗?

这是我到目前为止的想法,基于我在另一个问题上所读到的内容:

setInterval(function() {
    $.ajax({
        type: 'GET',
        url: ''<%= comments_path(:json) %>'',
        data: {
            data: "comments_data"
        },
        cache: false,
        success: function(result) {
            if (result == "true"){
                alert("true");
            }else{
                alert("false");
            }
        }
    });
}, 3000);

1 个答案:

答案 0 :(得分:0)

作为替代方案,你应该看看Private Pub,这是Ryan Bates为其设置的宝石。在railscasts上查看有关它的截屏视频。

您的解决方案的问题现在通常是您的服务器将被不必要的打击,我想这取决于您将查看此页面的并发用户的数量。

如果你确实沿着你的路线行进,.js.erb就会有这样的东西:

$('#id_of_area_to_replace').html("<%= escape_javascript(render"comments/index") %>")

这将取代整个区域,你只能append新评论到区域底部