Rails 4删除受模板JS影响的链接

Rails 4 Delete link influenced by Template JS

本文关键字:JS 影响 链接 删除 Rails      更新时间:2023-09-26

我正在使用带有设备的rails 4。所有Devise功能都按预期工作,包括以下代码提供的"注销"链接:

= link_to "<span class= 'fa fa-power-off'></span> Sign Out".html_safe, destroy_user_session_path, method: :delete

此后,我安装了一个模板,遇到了一些问题。当我把"注销"链接放在导航栏的下拉列表中时,模板文件中的JS似乎造成了一些困难。如果我把链接放在正常的正文内容中,它确实有效。这让我找到了模板源代码,试图弄清楚为什么这个链接在放置在模板导航栏下拉列表中时发送的是GET请求而不是DELETE请求。在我删除了以下代码后,我的链接开始工作:

 $('.dropdown-menu').on('click', function(e) {
     e.stopPropagation();
     var Target  = $(e.target);
     var TargetGroup = Target.parents('.btn-group');
     var SiblingGroup = Target.parents('.dropdown-menu').find('.btn-group');
     // closes all open multiselect menus. Creates Toggle like functionality
     if (Target.hasClass('multiselect') || Target.parent().hasClass('multiselect')) {
       SiblingGroup.removeClass('open');
       TargetGroup.addClass('open');
     }
     else { SiblingGroup.removeClass('open'); }
      e.stopPropagation();
      var Target  = $(e.target);
      var TargetGroup = Target.parents('.btn-group');
      var SiblingGroup = Target.parents('.dropdown-menu').find('.btn-group');
  });

当我添加剩下的Template.js文件时,它再次停止工作,所以我假设在其他文件中也做了类似的事情。我没有删除JS的片段,而是试图了解发生了什么。我知道Rails使用它的uj来触发DELETE请求,但为什么上面的JS代码阻碍了Rails做它应该做的事情?

PS。我的JS并不流利,所以对于一个非常了解JS的人来说,这似乎很简单。

我认为问题出在js代码中的e.stopPropagation();行。这些可能并不是真正需要的。但是,它可能取决于下拉菜单中其他链接的种类。试着去掉这两条线,检查一下是否一切正常。