2011-01-24 11 views
1

我正在rails應用上構建ruby。 我有部分HTML包含對象的屬性 - @ shout.content(文本屬性)。如何使用ajax重新加載js.jrs文件

在控制器怒吼是 - @shout = Shout.last

的想法是,@shout變化,每一個新的喊創建時間(它改變爲新的喊)。 我希望每3秒鐘部分(包含@ shout.content)將使用ajax「刷新」。

我認爲把將要重複一次3秒JavaScript函數:)

setInterval("updateShout()", 3000); 

而且updateShout(將運行js.rjs文件,將做到這一點:

page.replace_html('content', render(:partial => 'content', :locals => {:content => @shout.content})) 

的缺少的部分是updateShout()函數。我不知道如何使用javascript來執行js.rjs文件。

你知道如何使用javascript執行js.rjs?

感謝,

俄德

回答

0

鑑於您(似乎)在使用Prototype,您可以大大簡化此操作。首先,而是您的來電setInterval的,在你的頁面的底部把它放進一個<script>標籤:

new Ajax.PeriodicalUpdater('content', '/path/to/shouts.js', { method: 'get', frequency: 3}); 

確保您提供相應的URL替換/path/to/shouts.js。有關更多詳細信息,請參閱periodicalUpdater

,而不是你的RJS局部然後,你需要的是在您的控制器如下:

respond_to do |format| 
    format.html 
    format.js { render :text => @shout.content } 
end 

這將導致系統中的最新歡呼的文本,並將其發送回瀏覽器,留下PeriodicalUpdater爲您替換content div中的文本。

+0

好的,但是shout.js會怎麼樣? – 2011-01-24 12:17:57

-1

你只是打電話的諧音,你需要觸發一個AJAX查詢獲取記錄,並設置用戶界面按照您的使用jQuery那麼火AJAX請求創建requirement.If js.erb文件,並調用您的部分將生成所需的HTML,在成功的請求只是更新您的DOM元素。

$.ajax({ 
     type: "GET", 
     url: "<%= url %>" 
    success: function(html){ 
      $("#content").html(html); 
     } 
    }); 
+0

看起來他正在使用原型而不是JQuery ... – 2011-01-24 11:25:16