2012-06-13 71 views
1

我試圖刷新使用AJAX /非侵入式JavaScript/JQuery的一個div的內容定期刷新。的Rails 3 - DIV

這是很容易做到,如果我做一個「刷新」鏈接,並給它一個數據的遠程屬性。

不過,我想使用setInterval函數,而不是使用鏈接刷新每2秒。

此代碼應該證明什麼,我試圖做的。它在放入application.js時不起作用,因爲ERB沒有被評估,但希望它能解釋我的目標。

setInterval(function(){ 
    $("#scuttlebutt").html("<%= escape_javascript(render 'scuttlebutt') %>"); 
    },2000); 

什麼是在Rails 3中這樣做的正確方法?

回答

2

最後我把代碼的application.js那會:

  • 檢查是否存在DIV
  • 使用的setInterval
  • 請求JS腳本從Rails的在當前的URL會讓一個計時器導致對js.erb視圖文件的評估。當這個文件運行時,它會更新我的div。

看哪......

資產/ Java腳本/ application.js中

$(function() { 

    if ($('#scuttlebutt').length) { 
    setInterval(function(){ 
     $.getScript(window.location.pathname, function(data, textStatus, jqxhr) { 
     console.log('Load was performed.'); 
     }); 
    },2000); 
    } 

}); 

的意見/票/ show.js.erb

$("#scuttlebutt").html(" <%= escape_javascript(render 'scuttlebutt') %>"); 
+0

發現有人在做類似的事情http://railsforum.com/viewtopic.php?id=48076 – Selah

+0

發現這個railscast也很有幫助http://railscasts.com/episodes/136-jquery – Selah

0

退房this question(我使用Rails 3.2.5的工作)。

它指出,.js文件不被解析像.erb文件。他們按原樣通過。

+0

我意識到這一點。代碼示例只是爲了演示我正在嘗試做什麼。 – Selah

2

好吧,我明白你在做什麼。我之前完成了這個工作,並且找到了一個簡單的方法。

你想還有調用遠程方法在執行一些JavaScript回到瀏覽器刷新DIV控制器的按鈕。我知道,我知道,你不想擁有它,但是我在這裏。我有一個我的網頁上,但我把它藏在遙遠的一側,使得沒有人能夠找到它,鏈接如下:然後

:id => "refresh_button", :style => "position: absolute; left: -9999px" // Rails ERB notation 

,我說這是同一個文件,這我相信是一個.html.erb文件。

<script type="text/javascript"> 
    function doSomething() { 
    $('#refresh-button').click(); 
    } 

    setInterval('doSomething()',2000); 
</script> 

這將每隔2秒按一次按鈕,調用遠程函數,就好像有些人每兩秒鐘點擊一次該按鈕一樣。我知道這並不是最乾淨的方式,但它可以很好地工作,直到你能夠爲你提供更強大的工作。儘管你可以在技術上使用它。

希望有所幫助。

+0

謝謝,這很有幫助! – Selah

+0

@Selah歡迎您。很高興我能幫你解決問題並正確回答你的問題。我在我必須實施的網站上爲我工作得非常好。 –