通过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
并不意味着在这种复杂的情况下使用。
我很害怕可能是这种情况。我想现在是学习编写自己的AJAX的时候了。 – seaneshbaugh 2010-05-08 09:16:43