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

Posted

技术标签:

【中文标题】Rails 4删除受模板JS影响的链接【英文标题】:Rails 4 Delete link influenced by Template JS 【发布时间】:2016-02-11 20:23:01 【问题描述】:

我正在使用带有设计的 rails 4。所有设计功能都按预期工作,包括以下代码给出的“退出”链接:

= 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');
  );

当我添加模板 js 文件的其余部分时,它再次停止工作,因此我假设在其他文件之一中完成了类似的操作。我没有删除 JS 的片段,而是试图了解正在发生的事情。我知道 Rails 使用它的 ujs 来触发 DELETE 请求,但是为什么上面的 JS 代码会阻碍 Rails 做它应该做的事情?

PS。我不精通 JS,所以对于非常了解 JS 的人来说,这可能看起来很简单。

【问题讨论】:

【参考方案1】:

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

【讨论】:

以上是关于Rails 4删除受模板JS影响的链接的主要内容,如果未能解决你的问题,请参考以下文章

我可以在rails中的单个页面中呈现两个不同的控制器操作

Linux 练习题-3文件与磁盘 问答

Rails 4 - 通过使用 AJAX UJS 的集合中的链接更新表

如何编写带有图标的茧删除链接

Rails 视图在删除链接中传递了错误的参数

无法删除 Opsworks deploy 创建的 rails/system 符号链接