"Devise注销链接问题(Rails4)"

29 浏览
0 Comments

"Devise注销链接问题(Rails4)"

我的rails版本:

rails -v
Rails 4.0.2

我在用户模型中使用Devise。

登出链接是:

  <%= link_to 'Sign out', destroy_user_session_path, method: :delete %>

当我点击链接时,我得到这个错误:

AbstractController::ActionNotFound at /users/sign_out
The action 'show' could not be found for UsersController

通过执行rake routes,我得到:

destroy_user_session DELETE /users/sign_out(.:format) devise/sessions#destroy

开发日志记录:

Started GET "/users/sign_out" for 127.0.0.1 at 2013-12-28 20:45:06 +0000
AbstractController::ActionNotFound - The action 'show' could not be found for UsersController:
  actionpack (4.0.2) lib/abstract_controller/base.rb:131:in `process'
  actionpack (4.0.2) lib/abstract_controller/rendering.rb:44:in `process'
  actionpack (4.0.2) lib/action_controller/metal.rb:195:in `dispatch'
  actionpack (4.0.2) lib/action_controller/metal/rack_delegation.rb:13:in `dispatch'
  actionpack (4.0.2) lib/action_controller/metal.rb:231:in `block in action'
  actionpack (4.0.2) lib/action_dispatch/routing/route_set.rb:80:in `dispatch'
  actionpack (4.0.2) lib/action_dispatch/routing/route_set.rb:48:in `call'
  actionpack (4.0.2) lib/action_dispatch/journey/router.rb:71:in `block in call'
  actionpack (4.0.2) lib/action_dispatch/journey/router.rb:59:in `call'
  actionpack (4.0.2) lib/action_dispatch/routing/route_set.rb:680:in `call'

我不明白为什么它会搜索show动作。仅仅是因为好玩,我在用户控制器中创建了show动作和show视图。然后它会重定向到show动作。没有头绪是为什么。

如果您需要其他信息,请让我知道。

有什么想法是什么问题?

admin 更改状态以发布 2023年5月22日
0
0 Comments

我通过创建这样的 devise_scope 将其修复:

  devise_scope :user do
    get '/users/sign_out' => 'devise/sessions#destroy'
  end

感谢 @David 的帮助。

0
0 Comments

如果您正在为用户使用devise模型,并且正在使用用户资源,那么请确保在/config/routes.rb中将“devise_for :users”提前于“resources:users”。

0