Ruby on rails 设计销毁用户会话路径不';行不通
在我的RubyonRails应用程序中,我遇到了一个用户使用Desive注销的问题 我有一个导航栏:Ruby on rails 设计销毁用户会话路径不';行不通,ruby-on-rails,devise,Ruby On Rails,Devise,在我的RubyonRails应用程序中,我遇到了一个用户使用Desive注销的问题 我有一个导航栏: <% if current_user %> <nav class="top-bar" data-topbar role="navigation"> <ul class="title-area"> <li class="name"> <h1><%= link_to 'Prova CMS', articles_
<% if current_user %>
<nav class="top-bar" data-topbar role="navigation">
<ul class="title-area">
<li class="name">
<h1><%= link_to 'Prova CMS', articles_path %></h1>
</li>
<li class="toggle-topbar menu-icon"><a href="#"></a></li>
</ul>
<section class="top-bar-section">
<ul class="right">
<li><%=link_to 'Gestisci Articoli', articles_path %></li>
<li><%=link_to 'Gestisci Categorie', categories_path %></li>
<li class="has-dropdown">
<a href="#"><%= current_user.email %></a>
<ul class="dropdown">
<li><%= link_to "Logout", destroy_user_session_path, :method => :delete %></li>
</ul>
</li>
</ul>
<% if current_page?(articles_path) %>
<ul class="left">
<div class="large-12 columns">
<%= form_tag articles_path, :id => "articles_search" , method: 'get' do %>
<%= text_field_tag :search, params[:search], :placeholder => "Cerca per titolo"%>
<% end %>
</div>
</ul>
<% end %>
</section>
</nav>
<% else %>
<nav class="top-bar" data-topbar role="navigation">
<ul class="title-area">
<li class="name">
<h1><%= link_to 'Prova CMS', root_path %></h1>
</li>
<li class="toggle-topbar menu-icon"><a href="#"></a></li>
</ul>
<section class="top-bar-section">
<ul class="right">
<li><%= link_to 'Login', new_user_session_path%></li>
</ul>
</section>
</nav>
在application.js中,所有jquery链接都运行良好:
// This is a manifest file that'll be compiled into application.js, which will include all the files
// listed below.
//
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
// or any plugin's vendor/assets/javascripts directory can be referenced here using a relative path.
//
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
// compiled file.
//
// Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details
// about supported directives.
//
//= require jquery
//= require jquery_ujs
//= require foundation
//= require turbolinks
//= require_tree .
$(function(){
$(document).foundation();
});
最后,我的路线如下:
Rails.application.routes.draw do
get 'show/index'
root to: "show#index"
devise_for :users
resources :categories
resources :articles
end
我认为您的问题可能与TurboLink有关。尝试为此页面禁用TurboLink以验证是否存在这种情况。在您的身体标签中添加:
<body data-no-turbolink="true">
我相信turbolinks将您的注销链接视为一个标准页面链接,以防止实际功能启动
编辑
如果您证明了这一点,请将禁用TurboLink的重点放在导致问题的特定链接上,并从正文中删除该属性
<%= link_to "Logout", destroy_user_session_path, :method => :delete, :data => { :no_turbolink => true } %>
:delete,:data=>{:no_turbolink=>true}%>
我认为您的问题可能与TurboLink有关。尝试为此页面禁用TurboLink以验证是否存在这种情况。在您的身体标签中添加:
<body data-no-turbolink="true">
我相信turbolinks将您的注销链接视为一个标准页面链接,以防止实际功能启动
编辑
如果您证明了这一点,请将禁用TurboLink的重点放在导致问题的特定链接上,并从正文中删除该属性
<%= link_to "Logout", destroy_user_session_path, :method => :delete, :data => { :no_turbolink => true } %>
:delete,:data=>{:no_turbolink=>true}%>
@Phil的答案是正确的。Rails 6.0.2.2不要求我禁用turbolink:
<%= link_to "Logout", destroy_user_session_path, :method => :delete %>
:删除%>
@Phil的答案是正确的。Rails 6.0.2.2不要求我禁用turbolink:
<%= link_to "Logout", destroy_user_session_path, :method => :delete %>
:删除%>
如果查看web浏览器控制台,单击注销链接时是否显示任何Java或其他错误?是否有任何请求被发送到development.log文件中显示的Rails服务器?控制台和日志没有显示任何内容,但我已经找到了错误的原因。代码在网站的url上加了一个#,然后(我不知道为什么)Desive无法进入destroy_user_session_pathView:delete%>我已经实现了它如果你查看web浏览器控制台,当你点击注销链接时,它是否显示任何Java或其他错误?是否有任何请求被发送到development.log文件中显示的Rails服务器?控制台和日志没有显示任何内容,但我已经找到了错误的原因。代码在网站的url上加了一个#,这样(我不知道为什么)Desive就不能进入destroy_user_session_路径视图:delete%>我已经实现了它,这是它=)。但是禁用turbolinks不是坏事吗?我在turbolinks上遇到了很多麻烦,所以经常将它从基于Ajax的项目中完全删除。我编辑了我的答案来说明如何仅在一个链接上禁用。如果我将数据应用到body,则没有turbolinks起作用……但如果我将:data=>{:no_turbolinks=>true}添加到link_to rails标记,则不会。所以我要申请bodyStrange。但我很高兴有东西对你有用。您还可以尝试将数据no turbolink=“true”添加到注销链接周围的