没有路线匹配 [GET] "/users/sign_out"轨 5



当我尝试签名时,我会遇到任何路由匹配的错误[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

应该处理的方式是两种方法之一:

  1. 使用删除方法而不是get

    <%= link_to "Sign Out", destroy_user_session_path, method: :delete, class: "nav-link" %>

-or-

  1. 编辑您的设计。

    config.sign_out_via = :delete to config.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"

请在那里检查我的答案(这里已删除的答案)

最新更新