Rails 3 + jQuery:在间隔上加载div是行不通的

时间:2010-11-07 15:46:16

标签: jquery ruby-on-rails

My Rails应用程序需要每分钟从服务器检索更新的计数。

我正在尝试让javascript计时器重新加载显示此计数的特定div。

    <%= javascript_include_tag "http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js", "http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.1/jquery-ui.min.js", "application", "refresh-timer" %>

你最后会注意到我包含了我的refresh-timer.js,这只是一个电话:

$(document).ready( function(){ 
setInterval(function(){ $('refreshable').load('/refreshable'); }, 3000);})

在我的status.html.erb视图中,'refreshable'对象与此对应:

<div class="main">
   <div id="refreshable">
       <%= render :partial => 'refreshable' %>
   </div>

是的,“主”div中有更多内容,但这是感兴趣的div#refreshable。

由于javascript正在加载/刷新,在我的routes.rb中创建了一个匹配项:

  match "refreshable" => "events#refreshable"

虽然我怀疑这是完全正确的做法,但我正在尝试简化事情,以找出为什么javascript计时器没有调用操作。

对于我的jQuery设置正确的测试,我通过调用alert替换了setInterval函数的内部。这很好用:警报每三秒钟弹出一次。 我还检查了Safari的开发工具中的页面 - 没有报告javascript错误,没有多余的html编码错误 - 它都非常干净(并且在我试图解决这个问题时非常简化)。

目前,作为后备,我每隔10秒就添加一次http刷新的元调用。这允许我在我的development.log中观看这是从浏览器到应用程序的唯一调用。

我更喜欢javascript / jQuery的故障排除技巧。我目前试图搞砸事情只是为了让事情失败并提供证据证明出错的地方也行不通!

1 个答案:

答案 0 :(得分:1)

您的jQuery选择器是错误的。改变这个:

$('refreshable')

对此:

$('#refreshable')