找不到路径“/ sessions / user”的设计映射devise登录错误 [英] Could not find devise mapping for path "/sessions/user" devise log in error

查看:197
本文介绍了找不到路径“/ sessions / user”的设计映射devise登录错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

过去几天很沮丧。



我有一个安装了Devise的rails应用程序,我生成了一个新的User模型,并生成了Devise视图。



当我在填写电子邮件和密码字段后点击登录时尝试以现有用户身份登录时会发生此情况:

  AbstractController :: ActionNotFound  - 找不到路径/ sessions / user的devise映射。 
这可能是由于两个原因:

1)你忘了在你的范围块中包装你的路由。例如:

devise_scope:user do
get/ some / route=> some_devise_controller
end

2)您正在测试绕过路由器的Devise控制器。
如果是这样,你可以明确告诉Devise使用哪个映射:

@ request.env [devise.mapping] = Devise.mappings [:user]


devise(3.2.4)app / controllers / devise_controller.rb:84:in`unknown_action!'
devise(3.2.4)app / controllers / devise_controller.rb:59: assert_is_devise_resource!'
devise(3.2.4)app / controllers / devise_controller.rb:97:在`require_no_authentication'
activesupport(4.0.4)lib / active_support / callbacks.rb:397:`_run__1955514966561508052__process_action__callbacks '
activesupport(4.0.4)lib / active_support / callbacks.rb:80:'run_callbacks'
actionpack(4.0.4)lib / abstract_controller / callbacks.rb:17:in`process_action'
actionpack(4.0.4)lib / action_controller / metal / rescue.rb:29:in'process_action'
actionpack(4.0.4)lib / action_controller / metal / instrumentation.rb:31:in` in process_action'
activesupport(4.0.4)lib / active_support / notifications.rb:159:in`block in instrument'
activesupport(4.0.4)lib / active_support / notifications / instrumenter.rb:20 :在仪器中
activesupport(4.0.4)lib / active_support / notifications.rb:159:in`instrument'
actionpack(4.0.4)lib / action_controller / metal / instrumentation.rb:30 :in process_action'
actionpack(4.0.4)lib / action_controller / metal / params_wrapper.rb:250:in`process_action'
activerecord(4.0.4)lib / active_record / railties / controller_runtime.rb :18:in'process_action'
actionpack(4.0.4)lib / abstract_controller / base.rb:136:in'process'
actionpack(4.0.4)lib / abstract_controller / rendering.rb:44 :in'process'
actionpack(4.0.4)lib / action_controller / metal.rb:195:in`dispatch'
actionpack(4.0.4)lib / action_controller / metal / rack_delegation.rb:13 :in'dispatch'
actionpack(4.0.4)lib / action_controller / metal.rb:231:in block in action'
actionpack(4.0.4)lib / action_dispatch / routing / route_set.rb :80:in'dispatch'
actionpack(4.0.4)lib / action_dispatch / routing / route_set.rb:48:in'call'
actionpack(4.0.4)lib / action_dispatch / journey / router .rb:71:in'block in call'
actionpack(4.0.4)lib / action_dispatch / journey / router.rb:59:in'call'
actionpack(4.0.4)lib / action_dispatch /routing/route_set.rb:674:in`call'
warden(1.2.3)lib / warden / manager.rb:35:在块中调用
warden(1.2.3)lib /warden/manager.rb:34:in` call'
rack(1.5.2)lib / rack / etag.rb:23:in`call'
rack(1.5.2)lib / rack /conditionalget.rb:35:in'call'
rack(1.5.2)lib / rack / head.rb:11:在`call'
actionpack(4.0.4)lib / action_dispatch / middleware /params_parser.rb:27:in`call'
actionpack(4.0.4)lib / action_dispatch / middleware / flash.rb:241:在`call'
rack /session/abstract/id.rb:225:in'context'
rack(1.5.2)lib / rack / session / abstract / id.rb:220:在`call'
actionpack .4)lib / action_dispatch / middleware / cookies.rb:486:in'call'
activerecord(4.0.4)lib / active_record / query_cache.rb:36:in`call'
activerecord .4)lib / active_record / connection_adapters / abstract / connection_pool.rb:626:in'call'
activerecord(4.0.4)lib / active_record / migration.rb:373:in'call'
actionpack (4.0.4)lib / action_dispatch / middleware / callbacks.rb:29:in'block in call'
activesupport(4.0.4)lib / active_support / callbacks.rb:373:in`_run__2142997860843545523__call__callbacks'
activesupport(4.0.4)lib / active_support / callbacks.rb:80:在`run_callbacks'
actionpack(4.0.4)lib / action_dispatch / middleware / callbacks.rb:27:in`call'
actionpack(4.0.4)lib / action_dispatch / middleware / reloader.rb:64:in'call'
actionpack(4.0.4)lib / action_dispatch / middleware / remote_ip.rb:76:in`call'
better_errors(1.1.0)lib / better_errors / middleware.rb:84:in'protected_app_call'
better_errors(1.1.0)lib / better_errors / middleware.rb:79:in`better_errors_call'
better_errors(1.1.0)lib / better_errors / middleware.rb:56:in'call'
actionpack(4.0.4)lib / action_dispatch / middleware / debug_exceptions.rb:17:in`call'
actionpack(4.0.4)lib / action_dispatch / middleware / show_exceptions.rb:30:in`call'
railties(4.0.4)lib / rails / rack / logger.rb:38:in`call_app'
railties(4.0.4)lib / rails / rack / logger.rb:20:inblock in call
activesupport(4.0.4)lib / active_support / tagged_logging.rb:68:in`
activesupport(4.0.4)lib / active_support / tagged_logging.rb:26:in`tagged'
activesupport '
railties(4.0.4)lib / rails / rack / logger.rb:20:in'call'
quiet_assets(1.0.2)lib / quiet_assets.rb:18:in`call_with_quiet_assets'
actionpack(4.0.4)lib / action_dispatch / middleware / request_id.rb:21:in`call'
rack(1.5.2)lib / rack / methodoverride.rb:21:in`call'
rack(1.5.2)lib / rack / runtime.rb:17:in`call'
activesupport(4.0.4)lib / active_support / cache / strategy / local_cache.rb:83:in`call '
rack(1.5.2)lib / rack / lock.rb:17:in`call'
actionpack(4.0.4)lib / action_dispatch / middleware / static.rb:64:in`call '
rack(1.5.2)lib / rack / sendfile.rb:112:在`call'
railties(4.0.4)lib / rails / engine.rb:511:in`call'
railties(4.0.4)lib / rails / application.rb:97:in`call'
rack(1.5.2)lib / rack / lock.rb:17:in`call'
rack(1.5.2)lib / rack / content_length.rb:14:in`call'
rack(1.5.2)lib / rack / handler / webrick.rb:60:in`service'
/Users/AaronWilliamson/.rubies/ruby-2.1.0/lib/ruby/2.1.0/webrick/httpserver.rb:138:in`service'
/Users/AaronWilliamson/.rubies/ruby-2.1 .0 / lib / ruby​​ / 2.1.0 / webrick / httpserver.rb:94:在`run'
/Users/AaronWilliamson/.rubies/ruby-2.1.0/lib/ruby/2.1.0/webrick /server.rb:295:in'block in start_thread'

事情是,当我注册作为一个新用户,它的工作就好了。我可以填写相应的字段,点击注册,它会通知我,我已成功登录,并将我重定向到根URL,显示用户登录。该错误只发生在我尝试登录。 / p>

这是我的路线:

  Ripelist :: Application.routes。 draw do 
devise_for:users,path_names:{sign_in:'login',sign_out:'logout',sign_up:'signup'}
root to:'listing#index'
match'会话/用户到:devise / sessions#create,通过::post

resources:users
resources:listings
resources:categories
resources:会话
end

有人可以帮助吗?

解决方案

在你的routes.rb文件,尝试包装你的路由在范围块内的错误消息建议。
下面是一个例子:

  devise_scope:user do 
getsignup,to:devise / registrations#new
getlogin,to:devise / sessions#new
getlogout,to:devise / sessions#destroy
end

这将给你很好地命名的路线。



顺便说一句,如果你使用Rails 4,摆脱匹配方法。您需要指定HTTP动词。






OBSOLETE旧答案:



使用上面的代码。)

  devise_for:users,path_names:{sign_in:' login',sign_out:'logout',sign_up:'signup'} 

AND

  match'/ sessions / user',to:'devise / sessions#create',via::post 


Very frustrating for the last few days.

I have a rails app with Devise installed where I generated a new User model and I generated Devise views as well.

This happens when I try to sign in as an existing user right when I click "Log in" after filling out the email and password fields:

AbstractController::ActionNotFound - Could not find devise mapping for path "/sessions/user".
This may happen for two reasons:

1) You forgot to wrap your route inside the scope block. For example:

  devise_scope :user do
    get "/some/route" => "some_devise_controller"
  end

2) You are testing a Devise controller bypassing the router.
   If so, you can explicitly tell Devise which mapping to use:

   @request.env["devise.mapping"] = Devise.mappings[:user]

:
  devise (3.2.4) app/controllers/devise_controller.rb:84:in `unknown_action!'
  devise (3.2.4) app/controllers/devise_controller.rb:59:in `assert_is_devise_resource!'
  devise (3.2.4) app/controllers/devise_controller.rb:97:in `require_no_authentication'
  activesupport (4.0.4) lib/active_support/callbacks.rb:397:in `_run__1955514966561508052__process_action__callbacks'
  activesupport (4.0.4) lib/active_support/callbacks.rb:80:in `run_callbacks'
  actionpack (4.0.4) lib/abstract_controller/callbacks.rb:17:in `process_action'
  actionpack (4.0.4) lib/action_controller/metal/rescue.rb:29:in `process_action'
  actionpack (4.0.4) lib/action_controller/metal/instrumentation.rb:31:in `block in process_action'
  activesupport (4.0.4) lib/active_support/notifications.rb:159:in `block in instrument'
  activesupport (4.0.4) lib/active_support/notifications/instrumenter.rb:20:in `instrument'
  activesupport (4.0.4) lib/active_support/notifications.rb:159:in `instrument'
  actionpack (4.0.4) lib/action_controller/metal/instrumentation.rb:30:in `process_action'
  actionpack (4.0.4) lib/action_controller/metal/params_wrapper.rb:250:in `process_action'
  activerecord (4.0.4) lib/active_record/railties/controller_runtime.rb:18:in `process_action'
  actionpack (4.0.4) lib/abstract_controller/base.rb:136:in `process'
  actionpack (4.0.4) lib/abstract_controller/rendering.rb:44:in `process'
  actionpack (4.0.4) lib/action_controller/metal.rb:195:in `dispatch'
  actionpack (4.0.4) lib/action_controller/metal/rack_delegation.rb:13:in `dispatch'
  actionpack (4.0.4) lib/action_controller/metal.rb:231:in `block in action'
  actionpack (4.0.4) lib/action_dispatch/routing/route_set.rb:80:in `dispatch'
  actionpack (4.0.4) lib/action_dispatch/routing/route_set.rb:48:in `call'
  actionpack (4.0.4) lib/action_dispatch/journey/router.rb:71:in `block in call'
  actionpack (4.0.4) lib/action_dispatch/journey/router.rb:59:in `call'
  actionpack (4.0.4) lib/action_dispatch/routing/route_set.rb:674:in `call'
  warden (1.2.3) lib/warden/manager.rb:35:in `block in call'
  warden (1.2.3) lib/warden/manager.rb:34:in `call'
  rack (1.5.2) lib/rack/etag.rb:23:in `call'
  rack (1.5.2) lib/rack/conditionalget.rb:35:in `call'
  rack (1.5.2) lib/rack/head.rb:11:in `call'
  actionpack (4.0.4) lib/action_dispatch/middleware/params_parser.rb:27:in `call'
  actionpack (4.0.4) lib/action_dispatch/middleware/flash.rb:241:in `call'
  rack (1.5.2) lib/rack/session/abstract/id.rb:225:in `context'
  rack (1.5.2) lib/rack/session/abstract/id.rb:220:in `call'
  actionpack (4.0.4) lib/action_dispatch/middleware/cookies.rb:486:in `call'
  activerecord (4.0.4) lib/active_record/query_cache.rb:36:in `call'
  activerecord (4.0.4) lib/active_record/connection_adapters/abstract/connection_pool.rb:626:in `call'
  activerecord (4.0.4) lib/active_record/migration.rb:373:in `call'
  actionpack (4.0.4) lib/action_dispatch/middleware/callbacks.rb:29:in `block in call'
  activesupport (4.0.4) lib/active_support/callbacks.rb:373:in `_run__2142997860843545523__call__callbacks'
  activesupport (4.0.4) lib/active_support/callbacks.rb:80:in `run_callbacks'
  actionpack (4.0.4) lib/action_dispatch/middleware/callbacks.rb:27:in `call'
  actionpack (4.0.4) lib/action_dispatch/middleware/reloader.rb:64:in `call'
  actionpack (4.0.4) lib/action_dispatch/middleware/remote_ip.rb:76:in `call'
  better_errors (1.1.0) lib/better_errors/middleware.rb:84:in `protected_app_call'
  better_errors (1.1.0) lib/better_errors/middleware.rb:79:in `better_errors_call'
  better_errors (1.1.0) lib/better_errors/middleware.rb:56:in `call'
  actionpack (4.0.4) lib/action_dispatch/middleware/debug_exceptions.rb:17:in `call'
  actionpack (4.0.4) lib/action_dispatch/middleware/show_exceptions.rb:30:in `call'
  railties (4.0.4) lib/rails/rack/logger.rb:38:in `call_app'
  railties (4.0.4) lib/rails/rack/logger.rb:20:in `block in call'
  activesupport (4.0.4) lib/active_support/tagged_logging.rb:68:in `block in tagged'
  activesupport (4.0.4) lib/active_support/tagged_logging.rb:26:in `tagged'
  activesupport (4.0.4) lib/active_support/tagged_logging.rb:68:in `tagged'
  railties (4.0.4) lib/rails/rack/logger.rb:20:in `call'
  quiet_assets (1.0.2) lib/quiet_assets.rb:18:in `call_with_quiet_assets'
  actionpack (4.0.4) lib/action_dispatch/middleware/request_id.rb:21:in `call'
  rack (1.5.2) lib/rack/methodoverride.rb:21:in `call'
  rack (1.5.2) lib/rack/runtime.rb:17:in `call'
  activesupport (4.0.4) lib/active_support/cache/strategy/local_cache.rb:83:in `call'
  rack (1.5.2) lib/rack/lock.rb:17:in `call'
  actionpack (4.0.4) lib/action_dispatch/middleware/static.rb:64:in `call'
  rack (1.5.2) lib/rack/sendfile.rb:112:in `call'
  railties (4.0.4) lib/rails/engine.rb:511:in `call'
  railties (4.0.4) lib/rails/application.rb:97:in `call'
  rack (1.5.2) lib/rack/lock.rb:17:in `call'
  rack (1.5.2) lib/rack/content_length.rb:14:in `call'
  rack (1.5.2) lib/rack/handler/webrick.rb:60:in `service'
  /Users/AaronWilliamson/.rubies/ruby-2.1.0/lib/ruby/2.1.0/webrick/httpserver.rb:138:in `service'
  /Users/AaronWilliamson/.rubies/ruby-2.1.0/lib/ruby/2.1.0/webrick/httpserver.rb:94:in `run'
  /Users/AaronWilliamson/.rubies/ruby-2.1.0/lib/ruby/2.1.0/webrick/server.rb:295:in `block in start_thread'

The thing is, when I sign up as a new user, it works just fine. I can fill in the appropriate fields, click "Sign up" and it notifies me that I've logged in successfully and redirects me to the root URL showing the user as logged in. The error only occurs when I try to log in.

Here are my routes:

Ripelist::Application.routes.draw do
  devise_for :users, path_names: { sign_in: 'login', sign_out: 'logout', sign_up: 'signup' }
  root to: 'listings#index'
  match '/sessions/user', to: 'devise/sessions#create', via: :post

  resources :users
  resources :listings
  resources :categories
  resources :sessions
end

Can anybody help?

解决方案

in your routes.rb file, try wrapping your routes inside the scope block as the error message suggests. Here is an example:

devise_scope :user do
   get "signup", to: "devise/registrations#new"
   get "login", to: "devise/sessions#new"
   get "logout", to: "devise/sessions#destroy"
end

This will give you nicely named routes.

And by the way, if you are using Rails 4, get rid of the match method. you need to specify the HTTP verb.


OBSOLETE old answer:

(Below is the old obsolete version of the code, shown for reference. Use the code above.)

devise_for :users, path_names: { sign_in: 'login', sign_out: 'logout', sign_up: 'signup' }

AND

match '/sessions/user', to: 'devise/sessions#create', via: :post

这篇关于找不到路径“/ sessions / user”的设计映射devise登录错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆