2010-09-07 91 views

回答

25

我正在寻找使用Rails 3做正确的方式,但现在我相信,没有等值的Rails periodically_call_remote 3. 要获得与jQuery做完全相同的功能,我用:

$(document).ready(
    function(){ 
    setInterval(function(){ 
     $('#mydiv').load('/controller/action'); 
    }, 3000); 
    }); 
+0

试图实现这一点,但挣扎。如果我在application.js中插入这段代码,在头文件中包含javascript默认值,并且有一个id ='mydiv'的DOM元素,那么它应该自动绑定,更正?另外,我如何动态更新URL,例如,如果我有一个嵌套的资源,以便我需要加载'/ controller /:id/action',其中:id是动态设置的? – 2011-06-22 03:56:35

+0

要做到这一点,只需将data-item-id添加到元素中,然后使用jQuery的.data()加载它,并且您可以对URL执行相同的操作。 – 2011-06-25 00:03:12

3

使用setInterval定期运行调用AJAX调用的函数。如果你是用jQuery来做的话,它可能是这样的:

var pollBackend = function() { 
    $.getJSON("/foo/bar/poll"); 
} 

setInterval(pollBackend, 5000); 

这将试图每5秒轮询给定的URL JSON数据。

5

如果你真的想使用它,那么你可以安装具有这种方法的传统插件:

http://github.com/rails/prototype_legacy_helper

的Rails现在有利于UJS。

查阅这些环节上UJS更多信息Rails中3:
http://railscasts.com/episodes/205-unobtrusive-javascript
http://www.simonecarletti.com/blog/2010/06/unobtrusive-javascript-in-rails-3/

我做了这相对于短书面记录原型和link_to_remote标签:
http://www.cowboycoded.com/2010/07/20/replacing-link_to_remote-with-ujs-in-rails-3-prototype/

希望这可以帮助!

+0

这也可能有帮助: http://railscasts.com/episodes/229-polling-for-changes – johnmcaliley 2010-09-09 12:42:24

1

这是你需要进行定期Ajax调用什么,用自己的REST风格的路线替代SOME_PATH:

<%= javascript_tag do -%> 
$(document).ready(
    function(){ 
    setInterval(function(){ 
     $.ajax({ 
     url: "<%= some_path %>", 
     type: "GET", 
     dataType: "script" 
    }); 
    }, 60000); 
}); 
<% end -%> 

的index.js.erb的文件应该是这样的:

$('#mydiv').html("<%= escape_javascript(render(:partial => 'my_partial')) %>"); 
2

如果你想继续使用prototype.js,所以你可以做什么如下:

<%= content_for :js do %> 
    new Ajax.PeriodicalUpdater("mydiv", 
    "/controller/action", 
    { frequency: 5, 
     method: 'get' }) 
<% end %> 

更多Ajax.PeriodicalUpdater here