我正在使用带有设计的rails 4。所有设计功能都按预期工作,包括"注销"由以下代码给出的链接:
= link_to "<span class= 'fa fa-power-off'></span> Sign Out".html_safe, destroy_user_session_path, method: :delete
我已经安装了模板并遇到了一些问题。当我放置&#34;退出&#34;模板文件中的JS似乎会造成一些困难。链接在Navbar的下拉列表中。 如果我将链接放在我的正常身体内容中,它确实有效。这导致我使用模板源代码来尝试找出当链接放置在模板导航栏下拉列表中时此链接发送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的人来说这似乎很简单。
答案 0 :(得分:0)
我认为问题在于js代码中的e.stopPropagation();
行。这些可能不是真的需要。但是,它可能取决于下拉菜单中的其他各种链接。只是尝试删除这两行并检查一切是否正常。