设计destroy_user_session_path不起作用 [英] Devise destroy_user_session_path doesn't work

查看:41
本文介绍了设计destroy_user_session_path不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在我的ruby on rails应用程序中,用户使用devise退出时遇到了问题

In my ruby on rails application I've a problem for the user logout with devise

我有这个导航栏:

<% 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>


在某些页面中,注销链接不起作用,并且它们在视图的url上生成一个Hashtag(例如,如果我在Articles_path localhost:3000 / articles上,则该链接在/ articles->附近添加# / articles#)

that i render in the application layout of the site (application.html.erb). In some page the logouts links doesn't works and they generate a Hashtag on the url of the views (for example if i'm on the articles_path localhost:3000/articles the link add # near the /articles -> /articles#)

该字符串未注释:

  # The default HTTP method used to sign out a resource. Default is :delete.
  config.sign_out_via = :delete

在application.js中,我已经拥有了所有jQuery链接工作正常:

and in the application.js i've got all the jquery links working fine:

    // 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有关。尝试为此页面禁用涡轮链接以验证是否是这种情况。在您的身体标签上添加:

I think your issue may be related to turbolinks. Try disabling turbolinks for this page to validate whether this is the case. To your body tag add:

<body data-no-turbolink="true">

我相信Turbolinks将您的注销链接视为标准页面链接,从而阻止了实际功能的触发

I believe that turbolinks is treating your logout link like a standard page link, preventing the actual functionality firing

编辑

如果您证明是这种情况,请重点禁用Turbolink

If you prove this is the case, focus disabling turbolinks to just the specific link that causes problems and remove the attribute from the body.

<%= link_to "Logout", destroy_user_session_path, :method => :delete, :data => { :no_turbolink => true } %>

这篇关于设计destroy_user_session_path不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆