Rails link_to忽略e.preventDefault(); 从jQuery调用,因为方法:: get设置

not*_*ceo 4 javascript jquery ruby-on-rails ruby-on-rails-3

实验上我已经了解到以下代码:

        <td><%= link_to 'Notify', '/w/'+w.id+'/notify', method: :get, :class => "btn btn-success notify-btn" %></td>
Run Code Online (Sandbox Code Playgroud)

无论这个jQuery如何都会触发:

  $('.notify-btn').click(function(e){
    e.preventDefault();
    bootbox.confirm("Alert?", function(result){
      if(result === true){
        return true;
      } else {
        return false;
      }
    });
  });
Run Code Online (Sandbox Code Playgroud)

这是由于方法:: get.我逐个删除了链接的元素并尝试了各种组合.如果方法:: get就在那里,它就会触发.

我可以阻止它e.stopPropagation,但那么它不会跟随链接在所有.即使我单击"确定",它也只是在页面上无所事事.

如果我摆脱erb并使用直接HTML,如下所示:

<a href="/w/53531e8a963e6503c60002b2/notify" class="btn btn-success notify-btn" data-method="get">Notify</a>
Run Code Online (Sandbox Code Playgroud)

而data-method ="get"就在那里,结果相同.如果我删除数据方法,它将弹出警报并阻止跟踪链接,但即使我确认,它也不会实际触发链接.

关于我做错了什么的任何想法?

not*_*ceo 9

  $('.notify-btn').click(function(e){
    e.preventDefault();
    e.stopPropagation();
    var link = $(this).attr('href')
    bootbox.confirm("Alert?", function(result){
      if(result){
        window.location = link;
        return true;
      } else {
        return false;
      }
    });
  });
Run Code Online (Sandbox Code Playgroud)

我不得不使用一些技巧 - 但上面的工作.

奇怪的是,它最终需要preventDefault和stopPropagation.我尝试了所有可能的组合.