Rails/Devise:找不到 'id'=sign_out 的用户
Rails/Devise: Couldn't find User with 'id'=sign_out
我从 Rails 收到一条错误消息,提示找不到 ID 为 'sign_out' 的用户。当我尝试注销用户会话时出现错误。应用程序正在查看 GET 路由,而不是我希望的 DELETE 路由。
我查看了其他有类似错误的帖子,他们建议路由配置不正确。但我似乎无法弄清楚我的应用程序发生了什么。我尝试了几种方法:
- 调换设计路线和用户资源的顺序
- 显式调用删除方法
- method/destory 路径的各种组合 link 登出
None 这些选项似乎对我有用。
这是我的相关文件:
routes.rb
Rails.application.routes.draw do
root to: 'welcome#index'
devise_for :users
resources :users, only: [:index,:show]
resources :images, only: [:index, :show, :update]
resources :challenges
end
我也试过嵌套直接调出路径:
devise_for :users do
get '/users/sign_out' => 'devise/sessions#destroy'
end
resources :users, only: [:index,:show]
我的 link 注销:
%li= link_to "Logout", destroy_user_session_path, :method => :delete
运行 rake路线(相关路线):
Prefix Verb URI Pattern Controller#Action
destroy_user_session DELETE /users/sign_out(.:format) devise/sessions#destroy
users GET /users(.:format) users#index
使用 "Log out" link 得到这个错误:
Couldn't find User with 'id'=sign_out
与请求关联的参数是:
Request
Parameters:
{"id"=>"sign_out"}
并且无论出于何种原因,link 仍会生成 GET 请求:
Started GET "/users/sign_out" for ::1 at 2015-12-25 03:35:11 -0600
Processing by UsersController#show as HTML
Parameters: {"id"=>"sign_out"}
有人对下一步 change/try 有什么建议吗?如果您需要任何其他文件的更多信息,请告诉我。
我的 application.js 文件需要默认注释:
//= require jquery
//= require jquery_ujs
我的 layouts/application.haml 文件需要 CSRF 元标记:
= csrf_meta_tags
感谢 sevenseacat 为我指明了正确的方向!
我从 Rails 收到一条错误消息,提示找不到 ID 为 'sign_out' 的用户。当我尝试注销用户会话时出现错误。应用程序正在查看 GET 路由,而不是我希望的 DELETE 路由。
我查看了其他有类似错误的帖子,他们建议路由配置不正确。但我似乎无法弄清楚我的应用程序发生了什么。我尝试了几种方法:
- 调换设计路线和用户资源的顺序
- 显式调用删除方法
- method/destory 路径的各种组合 link 登出
None 这些选项似乎对我有用。
这是我的相关文件:
routes.rb
Rails.application.routes.draw do
root to: 'welcome#index'
devise_for :users
resources :users, only: [:index,:show]
resources :images, only: [:index, :show, :update]
resources :challenges
end
我也试过嵌套直接调出路径:
devise_for :users do
get '/users/sign_out' => 'devise/sessions#destroy'
end
resources :users, only: [:index,:show]
我的 link 注销:
%li= link_to "Logout", destroy_user_session_path, :method => :delete
运行 rake路线(相关路线):
Prefix Verb URI Pattern Controller#Action
destroy_user_session DELETE /users/sign_out(.:format) devise/sessions#destroy
users GET /users(.:format) users#index
使用 "Log out" link 得到这个错误:
Couldn't find User with 'id'=sign_out
与请求关联的参数是:
Request
Parameters:
{"id"=>"sign_out"}
并且无论出于何种原因,link 仍会生成 GET 请求:
Started GET "/users/sign_out" for ::1 at 2015-12-25 03:35:11 -0600
Processing by UsersController#show as HTML
Parameters: {"id"=>"sign_out"}
有人对下一步 change/try 有什么建议吗?如果您需要任何其他文件的更多信息,请告诉我。
我的 application.js 文件需要默认注释:
//= require jquery
//= require jquery_ujs
我的 layouts/application.haml 文件需要 CSRF 元标记:
= csrf_meta_tags
感谢 sevenseacat 为我指明了正确的方向!