Duane, Try running "rake routes" in order to see which controller is being used for the create method. Hopefully that'll help narrow things down.
Best, Mike On Jan 31, 7:45 pm, Duane Morin <[email protected]> wrote: > So I've inherited a legacy application and I'm trying to work around the > edges as I put an admin tool interface on top of the existing code base. > I install Devise for user authentication, since I've used it in the > past. I change none of the default code. And yet, on successful sign > in, I get an error: > > Render and/or redirect were called multiple times in this action. Please > note that you may only call render OR redirect, and at most 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". > > Here's the thing, look where that error was thrown > > vendor/bundle/ruby/1.9.1/gems/actionpack-3.1.0/lib/action_controller/metal/ > rendering.rb:15:in > `render' > vendor/bundle/ruby/1.9.1/gems/actionpack-3.1.0/lib/action_controller/metal/ > instrumentation.rb:40:in > `block (2 levels) in render' > vendor/bundle/ruby/1.9.1/gems/activesupport-3.1.0/lib/active_support/core_e > xt/benchmark.rb:5:in > `block in ms' > /Users/dmorin/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/benchmark.rb:295:in > `realtime' > vendor/bundle/ruby/1.9.1/gems/activesupport-3.1.0/lib/active_support/core_e > xt/benchmark.rb:5:in > `ms' > vendor/bundle/ruby/1.9.1/gems/actionpack-3.1.0/lib/action_controller/metal/ > instrumentation.rb:40:in > `block in render' > vendor/bundle/ruby/1.9.1/gems/actionpack-3.1.0/lib/action_controller/metal/ > instrumentation.rb:81:in > `cleanup_view_runtime' > vendor/bundle/ruby/1.9.1/gems/activerecord-3.1.0/lib/active_record/railties > /controller_runtime.rb:24:in > `cleanup_view_runtime' > vendor/bundle/ruby/1.9.1/gems/actionpack-3.1.0/lib/action_controller/metal/ > instrumentation.rb:39:in > `render' > app/controllers/application_controller.rb:9:in `status' > > Look at that last line -- the status method of the > application_controller. This is an addition from the legacy code, a > simple monitoring method they installed so that the app responds to a > "/status" call with the text "UP". > > I know this to be the problem because if I no longer extend the > ApplicationnController and go straight to ActionController::Base > instead, thus avoiding that status method, then this error goes away. > I'm guessing that the problem goes a little something like this, > "Successful login wants to do a redirect, but then control moves on to > the status method which tries to do a render, and throws that > DoubleRender error." Take out the extra render, and it works. > > What I can't figure out for the life of me is how Devise is getting > there in the first place! > > The problem is coming from the SessionsController#create method, but > this is just the stock version I've done nothing do it: > > # POST /resource/sign_in > def create > resource = warden.authenticate!(:scope => resource_name, :recall => > "#{controller_path}#new") > set_flash_message(:notice, :signed_in) if is_navigational_format? > sign_in(resource_name, resource) > respond_with resource, :location => after_sign_in_path_for(resource) > end > > This is Devise 2.0.0 on a Rails 3.1 app, Ruby 1.9.2p136. I'm just > realizing, as I go googling around, just how new this version of Devise > is. I may need to back out a bit. > > -- > Posted viahttp://www.ruby-forum.com/. -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.

