通过periodic_call_remote发送更改参数

问题描述:

我正在使用periodically_call_remote更新包含对象列表的页面部分。我与url一起发送一个param,其中包含数据库中最近对象的created_at日期。被调用的动作然后获取自那时起创建的所有对象,并呈现一个将它们显示在列表顶部的部分。通过periodic_call_remote发送更改参数

问题是,我似乎无法弄清楚如何使它在下一次periodically_call_remote触发它沿新的最近对象(如果有的话)的created_at日期发送。我试着将periodically_call_remote放在正在​​渲染的部分内,但是这导致了各种各样的问题(This解释了为什么你不应该那样做)。

有没有什么办法可以让periodically_call_remote在每次调用时发送一个新的参数?就目前而言,它只是一遍又一遍地发送相同的消息,这意味着新对象不止一次呈现。

你说的黑客? :)

将参数存储在隐藏的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 

可以做一些hackery,但我建议您开始研究编写自己的JavaScript代码来执行AJAX请求。 Rails的帮手像periodically_call_remote并不意味着在这种复杂的情况下使用。

+1

我很害怕可能是这种情况。我想现在是学习编写自己的AJAX的时候了。 – seaneshbaugh 2010-05-08 09:16:43