devise: Undefined method users_url in SessionController
I’m using the master branch of Devise in my project and when I use a REST tester to POST to /users/sign_in.json, I get a NoMethodError:
undefined method `users_url' for #<Devise::SessionsController:0x007fef858a55a8>
Here is the full trace:
actionpack (3.1.0) lib/action_dispatch/routing/polymorphic_routes.rb:127:in 'polymorphic_url'
actionpack (3.1.0) lib/action_dispatch/routing/url_for.rb:145:in 'url_for'
actionpack (3.1.0) lib/action_controller/metal/rendering.rb:60:in '_process_options'
actionpack (3.1.0) lib/action_controller/metal/streaming.rb:233:in '_process_options'
actionpack (3.1.0) lib/action_controller/metal/renderers.rb:36:in 'block in _handle_render_options'
actionpack (3.1.0) lib/action_controller/metal/renderers.rb:34:in 'each'
actionpack (3.1.0) lib/action_controller/metal/renderers.rb:34:in '_handle_render_options'
actionpack (3.1.0) lib/action_controller/metal/renderers.rb:30:in 'render_to_body'
actionpack (3.1.0) lib/action_controller/metal/compatibility.rb:43:in 'render_to_body'
actionpack (3.1.0) lib/abstract_controller/rendering.rb:99:in 'render'
actionpack (3.1.0) lib/action_controller/metal/rendering.rb:16:in 'render'
actionpack (3.1.0) lib/action_controller/metal/instrumentation.rb:40:in 'block (2 levels) in render'
activesupport (3.1.0) lib/active_support/core_ext/benchmark.rb:5:in 'block in ms'
~/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/benchmark.rb:310:in 'realtime'
activesupport (3.1.0) lib/active_support/core_ext/benchmark.rb:5:in 'ms'
actionpack (3.1.0) lib/action_controller/metal/instrumentation.rb:40:in 'block in render'
actionpack (3.1.0) lib/action_controller/metal/instrumentation.rb:78:in 'cleanup_view_runtime'
activerecord (3.1.0) lib/active_record/railties/controller_runtime.rb:24:in 'cleanup_view_runtime'
actionpack (3.1.0) lib/action_controller/metal/instrumentation.rb:39:in 'render'
actionpack (3.1.0) lib/action_controller/metal/responder.rb:252:in 'display'
actionpack (3.1.0) lib/action_controller/metal/responder.rb:204:in 'api_behavior'
actionpack (3.1.0) lib/action_controller/metal/responder.rb:181:in 'rescue in to_format'
actionpack (3.1.0) lib/action_controller/metal/responder.rb:175:in 'to_format'
actionpack (3.1.0) lib/action_controller/metal/responder.rb:153:in 'respond'
actionpack (3.1.0) lib/action_controller/metal/responder.rb:146:in 'call'
actionpack (3.1.0) lib/action_controller/metal/mime_responds.rb:238:in 'respond_with'
~/.rvm/gems/ruby-1.9.2-p290/bundler/gems/devise-15b76e93d13d/lib/devise/controllers/internal_helpers.rb:142:in 'respond_with_navigational'
~/.rvm/gems/ruby-1.9.2-p290/bundler/gems/devise-15b76e93d13d/app/controllers/devise/sessions_controller.rb:10:in 'new'
actionpack (3.1.0) lib/action_controller/metal/implicit_render.rb:4:in 'send_action'
actionpack (3.1.0) lib/abstract_controller/base.rb:167:in 'process_action'
actionpack (3.1.0) lib/action_controller/metal/rendering.rb:10:in 'process_action'
actionpack (3.1.0) lib/abstract_controller/callbacks.rb:18:in 'block in process_action'
activesupport (3.1.0) lib/active_support/callbacks.rb:434:in '_run__2626332037988282076__process_action__4293483815377010594__callbacks'
activesupport (3.1.0) lib/active_support/callbacks.rb:386:in '_run_process_action_callbacks'
activesupport (3.1.0) lib/active_support/callbacks.rb:81:in 'run_callbacks'
actionpack (3.1.0) lib/abstract_controller/callbacks.rb:17:in 'process_action'
actionpack (3.1.0) lib/action_controller/metal/rescue.rb:17:in 'process_action'
actionpack (3.1.0) lib/action_controller/metal/instrumentation.rb:30:in 'block in process_action'
activesupport (3.1.0) lib/active_support/notifications.rb:53:in 'block in instrument'
activesupport (3.1.0) lib/active_support/notifications/instrumenter.rb:21:in 'instrument'
activesupport (3.1.0) lib/active_support/notifications.rb:53:in 'instrument'
actionpack (3.1.0) lib/action_controller/metal/instrumentation.rb:29:in 'process_action'
actionpack (3.1.0) lib/action_controller/metal/params_wrapper.rb:201:in 'process_action'
activerecord (3.1.0) lib/active_record/railties/controller_runtime.rb:18:in 'process_action'
actionpack (3.1.0) lib/abstract_controller/base.rb:121:in 'process'
actionpack (3.1.0) lib/abstract_controller/rendering.rb:45:in 'process'
actionpack (3.1.0) lib/action_controller/metal.rb:193:in 'dispatch'
actionpack (3.1.0) lib/action_controller/metal/rack_delegation.rb:14:in 'dispatch'
actionpack (3.1.0) lib/action_controller/metal.rb:236:in 'block in action'
~/.rvm/gems/ruby-1.9.2-p290/bundler/gems/devise-15b76e93d13d/lib/devise/failure_app.rb:45:in 'call'
~/.rvm/gems/ruby-1.9.2-p290/bundler/gems/devise-15b76e93d13d/lib/devise/failure_app.rb:45:in 'recall'
~/.rvm/gems/ruby-1.9.2-p290/bundler/gems/devise-15b76e93d13d/lib/devise/failure_app.rb:29:in 'respond'
actionpack (3.1.0) lib/abstract_controller/base.rb:167:in 'process_action'
actionpack (3.1.0) lib/abstract_controller/base.rb:121:in 'process'
actionpack (3.1.0) lib/action_controller/metal.rb:193:in 'dispatch'
actionpack (3.1.0) lib/action_controller/metal/rack_delegation.rb:14:in 'dispatch'
actionpack (3.1.0) lib/action_controller/metal.rb:236:in 'block in action'
~/.rvm/gems/ruby-1.9.2-p290/bundler/gems/devise-15b76e93d13d/lib/devise/failure_app.rb:18:in 'call'
~/.rvm/gems/ruby-1.9.2-p290/bundler/gems/devise-15b76e93d13d/lib/devise/failure_app.rb:18:in 'call'
warden (1.0.5) lib/warden/manager.rb:118:in 'call_failure_app'
warden (1.0.5) lib/warden/manager.rb:104:in 'process_unauthenticated'
warden (1.0.5) lib/warden/manager.rb:47:in 'call'
actionpack (3.1.0) lib/action_dispatch/middleware/best_standards_support.rb:17:in 'call'
rack (1.3.3) lib/rack/etag.rb:23:in 'call'
rack (1.3.3) lib/rack/conditionalget.rb:35:in 'call'
actionpack (3.1.0) lib/action_dispatch/middleware/head.rb:14:in 'call'
actionpack (3.1.0) lib/action_dispatch/middleware/params_parser.rb:21:in 'call'
actionpack (3.1.0) lib/action_dispatch/middleware/flash.rb:243:in 'call'
rack (1.3.3) lib/rack/session/abstract/id.rb:195:in 'context'
rack (1.3.3) lib/rack/session/abstract/id.rb:190:in 'call'
actionpack (3.1.0) lib/action_dispatch/middleware/cookies.rb:326:in 'call'
activerecord (3.1.0) lib/active_record/query_cache.rb:62:in 'call'
activerecord (3.1.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:477:in 'call'
actionpack (3.1.0) lib/action_dispatch/middleware/callbacks.rb:29:in 'block in call'
activesupport (3.1.0) lib/active_support/callbacks.rb:392:in '_run_call_callbacks'
activesupport (3.1.0) lib/active_support/callbacks.rb:81:in 'run_callbacks'
actionpack (3.1.0) lib/action_dispatch/middleware/callbacks.rb:28:in 'call'
actionpack (3.1.0) lib/action_dispatch/middleware/reloader.rb:68:in 'call'
rack (1.3.3) lib/rack/sendfile.rb:101:in 'call'
actionpack (3.1.0) lib/action_dispatch/middleware/remote_ip.rb:48:in 'call'
actionpack (3.1.0) lib/action_dispatch/middleware/show_exceptions.rb:47:in 'call'
railties (3.1.0) lib/rails/rack/logger.rb:13:in 'call'
rack (1.3.3) lib/rack/methodoverride.rb:24:in 'call'
rack (1.3.3) lib/rack/runtime.rb:17:in 'call'
activesupport (3.1.0) lib/active_support/cache/strategy/local_cache.rb:72:in 'call'
rack (1.3.3) lib/rack/lock.rb:15:in 'call'
actionpack (3.1.0) lib/action_dispatch/middleware/static.rb:53:in 'call'
railties (3.1.0) lib/rails/engine.rb:455:in 'call'
railties (3.1.0) lib/rails/rack/content_length.rb:16:in 'call'
railties (3.1.0) lib/rails/rack/log_tailer.rb:14:in 'call'
rack (1.3.3) lib/rack/handler/webrick.rb:59:in 'service'
~/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/webrick/httpserver.rb:111:in 'service'
~/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/webrick/httpserver.rb:70:in 'run'
~/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/webrick/server.rb:183:in 'block in start_thread'
How do I/we remedy this bug? Thanks!
About this issue
- Original URL
- State: closed
- Created 13 years ago
- Comments: 25 (4 by maintainers)
This is happening because your implementation of
after_sign_in_path_formethod returnsnil.I had this error, but only when I was trying to deep link in to my app when not logged in. It turned out to be a sneaky little bug, one that’s worth remembering. I had overridden
after_sign_in_path_forto do different redirects based on my User’s state. At the top of that I hadHowever, when you call
stored_location_forit clears the value, so when a value was present the condition was true but then it returned nil, at which point Devise must have fallen back on the default of users_url, which I don’t have defined.I now have
@doncadavona - This should be working fine. Are you redefining after_sign_in_path_for?
What does ‘grep -r after_sign_in_path_for app/’ return?
@mib32 was my solution.