没有路线匹配 [GET]“user/sign_out”rails 5

问题描述 投票:0回答:4

我目前使用 Devise 遇到此错误,并且我已经尝试了其他问题中的多种方法,以便以零运气解决它。

首先建议我确保将该方法添加为删除:

<%= link_to "Logout", destroy_user_session_path, :method => :delete, :class => 'navbar-link'  %>

没有运气。

然后有人建议我需要在布局标题中包含以下内容:

<%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %>

或者这个:

<%= javascript_include_tag :defaults %>

仍然...没有运气。

最后,建议我更改 /config/initializers/devise.rb 文件,将

config.sign_out_via = :delete
更改为
config.sign_out_via = :get

一点运气都没有。

我不知道还要尝试什么,

这是我当前的 HTML 代码,如果您需要查看我的路线以便更好地为您提供帮助,请告诉我。

    <!DOCTYPE html>
<html>
<header>
  <h2><span>Anume*</span></h2>
  <img id='header' src="http://wallpapercave.com/wp/hkWe2SK.jpg" alt="" />



</header>
  <head>
    <title>Anume</title>
    <%= csrf_meta_tags %>

    <%= stylesheet_link_tag    'application', media: 'all', 'data-turbolinks-track': 'reload' %>
    <%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %>
  </head>

<body>
<p class="navbar-text pull-right">
    <% if user_signed_in? %>
    Logged in as
    <strong><%= current_user.email %></strong>.
    <%= link_to 'Edit profile', edit_user_registration_path, :class => 'navbar-link' %>
    |
    <%= link_to "Logout", destroy_user_session_path, :method => :delete, :class => 'navbar-link'  %>
    <% else %>
    <%= link_to "Sign up", new_user_registration_path, :class => 'navbar-link'  %>
    |
    <%= link_to "Login", new_user_session_path, :class => 'navbar-link'  %>
    <% end %>
</p>
</body>

这是我的注销功能的铁路路线:

destroy_user_session DELETE /users/sign_out(.:format)    devise/session#destroy
ruby-on-rails devise
4个回答
10
投票

我喜欢在我的

上做的一件事

/config/initializers/devise.rb 从

config.sign_out_via = :delete
更改为
config.sign_out_via = [:delete, :get]
,因此您可以覆盖这两种情况,以防删除方法未命中。

打开控制台并确保 jquery 和 jquery_ujs 正确加载

让我与您分享我的设置

在我的资产 application.js 中我有

#app/assets/javascripts/application.js
//= require jquery
//= require jquery_ujs
//= require turbolinks

现在在我的布局上

#app/views/layouts/application.html.haml
!!!
%html{:lang => "en"}
  %head
    %meta{:charset => "utf-8"}/
    %meta{:content => "IE=edge", "http-equiv" => "X-UA-Compatible"}/
    %meta{:content => "width=device-width, initial-scale=1", :name => "viewport"}/
    %title
      Best Site Ever
    = csrf_meta_tags
    = stylesheet_link_tag    'application', media: 'all', 'data-turbolinks-track': 'reload'
    = javascript_include_tag 'application', 'data-turbolinks-track': 'reload'

  %body
    - if current_user
      = link_to destroy_user_session_path, :method => :delete do
        Logout

我希望这能有所帮助


0
投票

我有类似的问题,对我来说这是与 require 相关的问题

jquery_ujs 
require turbolinks

请检查

应用程序/资产/javascripts/application.js

以下行是否存在。

//= require jquery
//= require jquery_ujs
//= require turbolinks 

另请确保 application.html.erb 文件,

<%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %>

上面一行没有评论


0
投票

如果有人使用Rails 7更改此行

 <%= link_to "Logout", destroy_user_session_path, :method => :delete, :class => 'navbar-link' %>

 <%= link_to "Logout", destroy_user_session_path, data: { turbo_method: :delete }, :class => 'navbar-link' %>

0
投票

我也遇到了同样的错误,我尝试了所有已经写过的东西,但它不起作用。问题不在于 ujs、turbo、importmap。当我解决问题时,另一篇文章指导了我。

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

在此输入链接描述

© www.soinside.com 2019 - 2024. All rights reserved.