I''m not sure why this is happening, but if I do this in a controller
unless @variation && @variation.quantity > 0
flash[:error] = "Sorry, that product is currently not
available."
redirect_to(:action => ''error'') and return
end
rspec tells me
2)
ActionController::DoubleRenderError in ''The Carts controller with an
existing User should add items to the cart''
Render and/or redirect were called multiple times in this action.
Please note that you may only call render OR redirect, and only once
per action. Also note that neither redirect nor render terminate
execution of the action, so if you want to exit an action after
redirecting, you need to do something like "redirect_to(...) and
return". Finally, note that to cause a before filter to halt execution
of the rest of the filter chain, the filter must return false,
explicitly, so "render(...) and return false".
/disk0s3/rails/store/trunk/vendor/plugins/rspec_on_rails/lib/spec/rails/context/controller.rb:82:in
`redirect_to''
/disk0s3/rails/store/trunk/vendor/plugins/rspec_on_rails/lib/spec/rails/context/controller.rb:82:in
`redirect_to''
/disk0s3/rails/store/trunk/config/../app/controllers/carts_controller.rb:92:in
`create''
spec/controllers/carts_controller_spec.rb:99:
spec/controllers/carts_controller_spec.rb:118:
however if I change that to
redirect_to(:action => ''error'')
return
it works just fine. All versions of "..and return" seem to fail.
courtenay
http://blog.caboo.se
David Chelimsky
2006-Dec-31 04:13 UTC
[rspec-users] redirect_to(:action => ''foo'') and return
On 12/30/06, Courtenay <court3nay at gmail.com> wrote:> I''m not sure why this is happening, but if I do this in a controller > > unless @variation && @variation.quantity > 0 > flash[:error] = "Sorry, that product is currently not available." > redirect_to(:action => ''error'') and return > end > > rspec tells me > > 2) > ActionController::DoubleRenderError in ''The Carts controller with an > existing User should add items to the cart'' > Render and/or redirect were called multiple times in this action. > Please note that you may only call render OR redirect, and only once > per action. Also note that neither redirect nor render terminate > execution of the action, so if you want to exit an action after > redirecting, you need to do something like "redirect_to(...) and > return". Finally, note that to cause a before filter to halt execution > of the rest of the filter chain, the filter must return false, > explicitly, so "render(...) and return false". > /disk0s3/rails/store/trunk/vendor/plugins/rspec_on_rails/lib/spec/rails/context/controller.rb:82:in > `redirect_to'' > /disk0s3/rails/store/trunk/vendor/plugins/rspec_on_rails/lib/spec/rails/context/controller.rb:82:in > `redirect_to'' > /disk0s3/rails/store/trunk/config/../app/controllers/carts_controller.rb:92:in > `create'' > spec/controllers/carts_controller_spec.rb:99: > spec/controllers/carts_controller_spec.rb:118: > > > however if I change that to > > redirect_to(:action => ''error'') > return > > it works just fine. All versions of "..and return" seem to fail.Please raise a bug on this. http://rspec.rubyforge.org/contribute.html http://rubyforge.org/tracker/?group_id=797 Thanks, David> > > courtenay > http://blog.caboo.se > _______________________________________________ > rspec-users mailing list > rspec-users at rubyforge.org > http://rubyforge.org/mailman/listinfo/rspec-users >