Flush render(:update) buffer to page

Hi,

I would like to have link_to_remote call my action and that action update the page of its progress using RJS.

In my view, I have: <%= link_to_remote 'run lots of code', :url => { :action => 'lots_of_code' } %> <span id="progress"></span>

In my controller, I have:   def lots_of_code     render(:update) do |page|       page.replace_html 'progress', 'test'     end     sleep(3)     @performed_render = false     render(:update) do |page|       page.replace_html 'progress', 'test2'     end   end

Basically, on the page I want to have 'test' appear, and then 'test2' appear 3 seconds later. I want to somehow flush the response buffer before the @performed_render line. Is there any way to do this? Or, is there a better way to accomplish what I want?

Thanks in advance, Gabe

I actually meant that I wanted to flush the buffer before the sleep(3) line, as that represents a lot of code being run. Anybody have any ideas?

Thanks, Gabe

Gabe Lerner wrote:

I actually meant that I wanted to flush the buffer before the sleep(3) line, as that represents a lot of code being run. Anybody have any ideas?

Currently Rails can't do that, though it'd be easy to make a patch that allowed you to call "yield" in an action to flush the output.

A hack that may work is:

     $stdout.write response.body      $stdout.flush      erase_render_results