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
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)
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 Duane Johnson wrote:> > 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) > >
Ah and I found an explanation: http://jamis.jamisbuck.org/articles/2005/07/08/rails-tip-of-the-day CHEERS> SAM Sam Joseph wrote:> 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 > > > Duane Johnson wrote: > >> >> 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) >> >> > > > _______________________________________________ > Rails mailing list > Rails-1W37MKcQCpIf0INCOvqR/iCwEArCW2h5@public.gmane.org > http://lists.rubyonrails.org/mailman/listinfo/rails > >
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/rails-tip-of-the-day > > 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)