2010-05-02 52 views
1

我正在使用periodically_call_remote更新包含對象列表的頁面部分。我與url一起發送一個param,其中包含數據庫中最近對象的created_at日期。被調用的動作然後獲取自那時起創建的所有對象,並呈現一個將它們顯示在列表頂部的部分。通過periodic_call_remote發送更改參數

問題是,我似乎無法弄清楚如何使它在下一次periodically_call_remote觸發它沿新的最近對象(如果有的話)的created_at日期發送。我試着將periodically_call_remote放在正在​​渲染的部分內,但是這導致了各種各樣的問題(This解釋了爲什麼你不應該那樣做)。

有沒有什麼辦法可以讓periodically_call_remote在每次調用時發送一個新的參數?就目前而言,它只是一遍又一遍地發送相同的消息,這意味着新對象不止一次呈現。

回答

2

你說的黑客? :)

將參數存儲在隱藏的div中。您可以通過Javascript訪問該div的內容,其中periodic_call_remote將作爲的一部分接受:使用選項。

當參數更改時,只需將隱藏div的內容更新爲控制器操作的一部分即可。

因此,例如..

<div id="date_to_check_from" style="display:none;"><%= @initial_created_at %></div> 

<%= periodically_call_remote :url => path_to_controller(@normal_params), :with => "'date_to_check_from=' + $('#date_to_check_from').html()", :method => :get, :frequency => 10 %> 

,將讓你PARAMS [:date_to_check_from]在您的控制器。然後更新你想要的,例如,

render :update do |page| 
    page << "$('#date_to_check_from').html('#{@new_date_to_check_from}'); 
end 
0

可以做一些hackery,但我建議您開始研究編寫自己的JavaScript代碼來執行AJAX請求。 Rails的幫手像periodically_call_remote並不意味着在這種複雜的情況下使用。

+1

我很害怕可能是這種情況。我想現在是學習編寫自己的AJAX的時候了。 – seaneshbaugh 2010-05-08 09:16:43