在我的ruby on rails应用程序中,用户使用设计注销时出现问题
我有这个导航栏:
<% 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.html.erb)。 在某些页面中,注销链接不起作用,并且它们在视图的URL上生成Hashtag(例如,如果我在articles_path localhost:3000 /文章链接添加#在/ articles附近 - &gt ; / articles#)
在设计的配置/初始化程序中,此字符串取消注释:
# The default HTTP method used to sign out a resource. Default is :delete.
config.sign_out_via = :delete
并且在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
答案 0 :(得分:3)
我认为您的问题可能与turbolinks有关。尝试禁用此页面的turbolinks以验证是否是这种情况。在你的身体标签上添加:
<body data-no-turbolink="true">
我相信turbolinks会像标准页面链接一样处理您的注销链接,阻止实际的功能触发
修改强>
如果您证明了这种情况,请将禁用turbolink的功能集中在导致问题的特定链接上,并从正文中删除该属性。
<%= link_to "Logout", destroy_user_session_path, :method => :delete, :data => { :no_turbolink => true } %>
答案 1 :(得分:0)
@Phil的回答是正确的。 Rails 6.0.2.2不需要我禁用Turbolink:
<%= link_to "Logout", destroy_user_session_path, :method => :delete %>