当我尝试签名时,我会遇到任何路由匹配的错误[get]/users/sign_out。这是我签名的链接标签。
<%= link_to "Sign Out", destroy_user_session_path, method: :get , class: "nav-link" %>
这是我与用户模型相关的路线,并设计出:
Rails.application.routes.draw do
devise_for :users do
get '/users/sign_out' => 'devise/sessions#destroy'
end
root 'books#index'
resources :books do
member do
put "like", to: "books#upvote"
end
end
end
这是我的设计。RB
config.sign_out_via = :get
在 rutes.rb
中尝试以下内容devise_for :users
devise_scope :user do
get '/users/sign_out' => 'devise/sessions#destroy'
end
有关更多信息如何设计
如果打算保留签名 /users/sign_out
的默认路由路径,那么而不是这样做:
devise_for :users do
get '/users/sign_out' => 'devise/sessions#destroy'
end
应该处理的方式是两种方法之一:
使用删除方法而不是get
<%= link_to "Sign Out", destroy_user_session_path, method: :delete, class: "nav-link" %>
-or-
编辑您的设计。
config.sign_out_via = :delete
toconfig.sign_out_via = :get
确保以下内容:
在您的gemfile中包括
gem 'jquery-rails'
在application.js
中//= require jquery
//= require jquery_ujs
我认为不太好的更改路由器或登录方法,该操作应始终使用删除进行。那对我有用。
由于您正在破坏会话,因此不是:get
方法,而是:delete
。修改链接:
= link_to "Log out", destroy_user_session_path, method: :delete
问题类似:
没有路由匹配[get]"/users/sign_out"
请在那里检查我的答案(这里已删除的答案)