如何使用$ .ajax()以设定的时间间隔更新Rails partials?
问题描述:
我在Rails 3.1中构建了一个CoverItLive的克隆,并且想要自动更新评论流。我在视图中使用了部分内容来显示评论。有很多关于在Rails中使用UJS和AJAX机智形式或按钮或链接的信息,但我找不到任何具体示例来说明我需要做什么。
我假设.ajax()
是最好的方法,但我从来没有使用过它,并不确定在使用此特定功能时是否需要提供.js.erb
文件?我可以让控制器发回JSON
回到客户端并从那里出发,或者在轨道上有更好的方法吗?
这是我在想什么,到目前为止,基于我在另一个问题阅读:
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);
答
作为替代你应该考虑Private Pub,宝石,瑞安·贝茨已经把togeather。在railscasts上查看关于它的截屏视频。
您的解决方案的麻烦现在经常会导致您的服务器不必要地被命中,我想这取决于您将查看此页面的并发用户数。
如果你不下去你的路线.js.erb可能只是有它这样的财产以后:
$('#id_of_area_to_replace').html("<%= escape_javascript(render"comments/index") %>")
这人换掉整个区域你可以只append新评论的底部该地区
该gem看起来很有趣,虽然我通常犹豫不决,没有一个很好的理由(除了方便之外)添加依赖关系,除非我花时间了解它们是如何工作的,但由于它是瑞恩,我至少可以指望它主要面向未来。我必须花时间观看Railscast。 – Slick23 2012-02-26 19:19:39