在turbolinks页面加载后发生AJAX请求

Aar*_*ron 6 javascript ajax jquery turbolinks ruby-on-rails-4

我有一个ruby on rails 4应用程序,它使用turbolinks和jquery ajax请求,现在我遇到了一些麻烦.

jquery ajax请求在正常条件下完美运行.我有一个只包含文本字段的远程表单,该字段在用户输入时自动发布:

<%= form_for(section, remote: true) do |form| %>
  <%= form.text_area :title, 'data-behavior' => 'autosubmit', placeholder: "Untitled Section", rows: 1, maxlength: 255 %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

如果我输入一个字符,表单会成功发布.当它与turbolinks交互时,我的问题就出现了.以下是步骤:

  1. 输入一个字符
  2. 在ajax请求完成之前单击链接
    • 链接页面按预期显示
  3. 单击浏览器的后退按钮
  4. 输入一个字符
  5. 在ajax请求完成之前单击链接

此时,似乎turbolinks向我展示了我点击的页面的缓存版本,这意味着URL已更改.

在turbolinks更改页面之后,似乎还会发送ajax请求.事实证明request.referrer,此时我点击的链接的URL是为了中断ajax请求,而不是请求实际来自的页面的URL.

所以,鉴于这一切,我不知道如何解决这个问题.也许我可以通过turbolinks取消所有的ajax请求page:change

你有什么想法?预先感谢!

编辑

另外,我发现在ajax请求搞砸的情况下,ajax:before事件不会被触发,尽管当事情似乎按预期工作时会被触发.