ruby-on-rails 没有路线匹配[GET]“用户/登出”rails 5

hiz5n14c  于 2023-01-22  发布在  Ruby
关注(0)|答案(3)|浏览(140)

我目前得到这个错误使用devise和我已经尝试了多个事情从其他问题,以解决它与零运气。
我首先被建议确保将该方法添加为delete:

<%= 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/device.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>

下面是我的退出功能的rails路径:

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

xu3bshqb1#

我喜欢做的一件事
/config/initializers/devies.rb从config.sign_out_via = :delete更改为config.sign_out_via = [:delete, :get],因此如果删除方法未命中,您可以同时处理这两种情况。
打开控制台并确保jquery和jquery_ujs正确加载
让我与您共享我设置
在我的资产应用程序. 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

我希望这能有所帮助

vjrehmav

vjrehmav2#

我也有类似的问题,对我来说是和需求有关的问题

jquery_ujs 
require turbolinks

请在
app/assets/javascripts/application.js
下面的线是否存在。

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

另外,请确保应用程序.html.erb文件,

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

以上行未注解

9jyewag0

9jyewag03#

如果有人正在使用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' %>

相关问题