2010-09-07 92 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