public Method

PrototypeHelper.periodically_call_remote(options = {})

Periodically calls the specified url (options[:url]) every options[:frequency] seconds (default is 10). Usually used to update a specified div (options[:update]) with the results of the remote call. The options for specifying the target with :url and defining callbacks is the same as link_to_remote. Examples:

# Call get_averages and put its results in 'avg' every 10 seconds
# Generates:
#      new PeriodicalExecuter(function() {new Ajax.Updater('avg', '/grades/get_averages',
#      {asynchronous:true, evalScripts:true})}, 10)
periodically_call_remote(:url => { :action => 'get_averages' }, :update => 'avg')

# Call invoice every 10 seconds with the id of the customer
# If it succeeds, update the invoice DIV; if it fails, update the error DIV
# Generates:
#      new PeriodicalExecuter(function() {new Ajax.Updater({success:'invoice',failure:'error'},
#      '/testing/invoice/16', {asynchronous:true, evalScripts:true})}, 10)
periodically_call_remote(:url => { :action => 'invoice', :id => customer.id },
   :update => { :success => "invoice", :failure => "error" }

# Call update every 20 seconds and update the new_block DIV
# Generates:
# new PeriodicalExecuter(function() {new Ajax.Updater('news_block', 'update', {asynchronous:true, evalScripts:true})}, 20)
periodically_call_remote(:url => 'update', :frequency => '20', :update => 'news_block')

Source Code

# File action_view/helpers/prototype_helper.rb, line 283
def periodically_call_remote(options = {})
   frequency = options[:frequency] || 10 # every ten seconds by default
   code = "new PeriodicalExecuter(function() {#{remote_function(options)}}, #{frequency})"
   javascript_tag(code)
end
Comments

Have your say
Please use Textile formatting (click here for a cheat sheet). Use <code/> and <pre/> for code samples.
Click here to login with OpenID to to post comments.