Weirdness with periodically_call_remote

Hi everyone,

I'm having a bit of a hard time with the function periodically_call_remote. Here is my problem:

I have a periodically_call_remote in a partial. With ajax, I do a replace_html of this partial for another partial, view/edit type of thing. The 2nd partial doesn't contain a periodically_call_remote. The problem is that the browser CONTINUES to query the server even tho the periodically_call_remote shouldn't be there anymore, because the partial changed.

Does anyone know how to disable this behavior? Can I call something in my .rjs templates to disable/enablethe periodically_call_remote?

Thanks,

Jd

I hate replying to myself, but I just noticed somethign else. When I come back from my partial that does not have a periodically_call_remote to the one that has, the browser now queries the server TWICE. Once for the original periodically_call_remote, and once for everytime the partial is reloaded.

This is not good...

Hey JD-

  You can setup a little switch you can use to turn of a periodical call like that. Just replacing the html does not stop the js from executing. You have to use a condition variable for that. Like this:

In the view partial to start the periodical call:

<div id='periodic'> <script>stop_polling = false;</script> <%= periodically_call_remote(:url => {:action => 'update_results'},                               :frequency => 5,                               :condition => "stop_polling == false") %> </div>

And in the controller to handle the update and turn off the periodic call:

   def update_results      render :update do |page|          page['periodic'].replace_html :partial => 'results_table'          page.assign 'stop_polling', true #<< here is the magick!      end    end

Cheers- -Ezra

Ahhh, exactly what I was looking for... Thank you very much

But Unfortunately I have another question :slight_smile:

I do a periodically_call_remote with a timestamp, to see if the item was modified ever since the last readout from the database.

What would be the best way to update the timestamp that periodically_call_remove is called with when I update an item?

<script>stop_polling = false;</script> <%= periodically_call_remote :url => { :action => :check_for_modifications, :id => @item, :readout_from_db => Time.now.to_i},                              :frequency => VERIFICATION_DELAY,                              :condition => "stop_polling == false" %>

It is even possible ordo I have to refresh the entire page?

Thanks,

Jd