我正在使用periodically_call_remote
来更新包含对象列表的页面的一部分。我向url发送一个包含数据库中最新对象的created_at日期的param。然后调用的操作将获取自此以后创建的所有对象,并呈现一个部分,将其显示在列表顶部。
问题是我似乎无法弄清楚如何制作它以便下一次periodically_call_remote
触发它沿着created_at日期发送新的最新对象(如果有的话)。我尝试将periodically_call_remote
置于正在渲染的部分内部,但这会导致各种问题(This解释了为什么不应该这样做)。
我可以通过某种方式让periodically_call_remote
每次调用时都发送新的参数吗?就像现在一样,它只是反复发送相同的一个,这意味着新对象不止一次被渲染。
答案 0 :(得分:2)
将参数存储在隐藏的div中。您可以通过Javascript访问该div的内容,periodic_call_remote将接受:with 选项的一部分。
当参数更改时,只需更新隐藏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
答案 1 :(得分:0)
可以做一些hackery,但我建议您开始考虑编写自己的JavaScript代码来执行AJAX请求。像periodically_call_remote
这样的Rails助手并不适合在如此复杂的情况下使用。