Forum: Ruby on Rails nested renders in the same call

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Cb33b32bd5d675db7be148542976e510?d=identicon&s=25 sam (Guest)
on 2005-12-09 05:02
(Received via mailing list)
Hi there,

So I have discovered that I can't do nested renders or redirects in the
same rails call.

This is a shame as it prevents me from doing some things I was
intending, such as being able to render editable components, e.g. you
render a note component, but then you can edit it, or cancel it.

I can get round this by copying the show.rhtml for the note and giving
it the name update.rhtml, and then having the output of the update
action display the edited note, but I'm breaking the DRY principle here.

Also I'd like to be able to offer the user different options such as
cancelling the edit, previewing etc. I guess I can hack my way out of
this but it doesn't seem very pretty.

Does anyone know why rails doesn't support nested rendering.redirecting
in the same call?

Many thanks in advance.

CHEERS> SAM
D8cb8c8cd40ddf0cd05241443a591868?d=identicon&s=25 duane.johnson (Guest)
on 2005-12-09 05:54
(Received via mailing list)
On Dec 8, 2005, at 8:28 PM, Sam Joseph wrote:

> Hi there,
>
> So I have discovered that I can't do nested renders or redirects in
> the
> same rails call.
>
Are you sure about that?  Many moons ago I used render_component in
my view files to call other controllers or actions that would, in
turn, render their views.  I imagine there's a fancy
render :component => {:controller => '/member', :action => 'signup'}
type of thing now.  Are you calling render_component (or its
equivalent) in the view file?  Or is that not the kind of nesting you
mean?

Duane Johnson
(canadaduane)
Cb33b32bd5d675db7be148542976e510?d=identicon&s=25 sam (Guest)
on 2005-12-09 19:18
(Received via mailing list)
Hi Duane,

I'm pretty sure.  I get this error:

 ActionController::DoubleRenderError in Workspaces#update_note

Can only render or redirect once per action

RAILS_ROOT: D:/user/Code/ruby/prometheus/public/../config/..
Application Trace | Framework Trace | Full Trace

D:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.11.0/lib/action_controller/base.rb:579:in
`render_with_no_layout'
D:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.11.0/lib/action_controller/layout.rb:226:in
`render_without_benchmark'
D:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.11.0/lib/action_controller/benchmarking.rb:53:in
`render'
D:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.11.0/lib/action_controller/benchmarking.rb:53:in
`measure'
D:/ruby/lib/ruby/gems/1.8/gems/actionpack-1.11.0/lib/action_controller/benchmarking.rb:53:in
`render'
#{RAILS_ROOT}/app/controllers/application.rb:51:in `componentize'
#{RAILS_ROOT}/app/controllers/workspaces_controller.rb:97:in
`update_note'
#{RAILS_ROOT}/app/views/workspaces/show.rhtml:17

I have render_component in my workspaces/show view, which then renders a
workpaces/update_note, as long as workspaces/update_note doesn't include
an explicit render or redirect it works fine - if I render or redirect
anything I get the above error.

CHEERS> SAM
Cb33b32bd5d675db7be148542976e510?d=identicon&s=25 sam (Guest)
on 2005-12-09 19:22
(Received via mailing list)
Ah and I found an explanation:

http://jamis.jamisbuck.org/articles/2005/07/08/rai...

CHEERS> SAM
D8cb8c8cd40ddf0cd05241443a591868?d=identicon&s=25 duane.johnson (Guest)
on 2005-12-10 23:20
(Received via mailing list)
On Dec 9, 2005, at 11:20 AM, Sam Joseph wrote:

> Ah and I found an explanation:
>
> http://jamis.jamisbuck.org/articles/2005/07/08/rai...
>
> CHEERS> SAM
>
Although not recommended for most situations, you can call
erase_render_results, or simply set @performed_render = false to
clear the DoubleRenderError.  Not sure what would happen if you do
though...

Reminds me of Ren and Stimpy "Don't press that RED BUTTON!!  We don't
know what it will dooooo...."

Duane Johnson
(canadaduane)
This topic is locked and can not be replied to.