On 5/1/07, knohr <just_a_techie200x / yahoo.com> wrote:
> <disclaimer>I'm new to rails and ruby</disclaimer>
> Sorry for the x-post.
>
> I am using "activescaffold" and have a model that takes some time to
> complete, I would like to have it update the page multiple times while
> 'foo' runs.

You'd be much better asking on the rails google group but:

>
> basically i have the following
>
> def foo
> render :text => "starting"
> .....
> end

I assume that you mean that this is in the controller not the model.

>
> It displays the text properly, but not untill 'foo' has completed.
>
> What I would like to do is something like the following.
>
> def foo
> render :text => "starting"
> ...
> render :text => "#{iteration} / #{total_iterations}"
> ...
> render :text => "complete"
> end

You're only allowed one render call per controller action. If you call
render a second time you'll get a DoubleRenderError exception.

A controller action processes a single http(s) request, and returns
one response, this is inherent in the design of the http protocol.  If
you've got a copy of Active Web Development with Rails, and if you
don't, you should, this is described on page 426 of the second
edition.

If you want to dynamically update the browser display you need to
explore techniques like using AJAX to have the browser poll for
updates.

And that's DEFINITELY a topic for the rails specific group rather than
ruby-talk.

-- 
Rick DeNatale

My blog on Ruby
http://talklikeaduck.denhaven2.com/