Ruby on rails Rails-TurboLink与Ajax Json响应

Ruby on rails Rails-TurboLink与Ajax Json响应,ruby-on-rails,ajax,json,ruby-on-rails-4,turbolinks,Ruby On Rails,Ajax,Json,Ruby On Rails 4,Turbolinks,我开发了一个小的演示应用程序,用于测试Facebook和Twitter等社交媒体的一些接口API 当我在视图中使用turbolinksgem-actived调用Ajax json时,我遇到了一个“问题”。有时(是的,有时!)它在视图中呈现JSON响应(如.JSON),而不是在正确的页面(html)中。如果我禁用turbolinksgem,问题就不会再出现了 有人知道为什么会这样吗?即使使用turbolinksgem,我还能做些什么来避免这个问题 如果您需要一些代码来更好地理解它,您可以在这里找到

我开发了一个小的演示应用程序,用于测试Facebook和Twitter等社交媒体的一些接口API

当我在视图中使用
turbolinks
gem-actived调用Ajax json时,我遇到了一个“问题”。有时(是的,有时!)它在视图中呈现JSON响应(如.JSON),而不是在正确的页面(html)中。如果我禁用
turbolinks
gem,问题就不会再出现了

有人知道为什么会这样吗?即使使用
turbolinks
gem,我还能做些什么来避免这个问题


如果您需要一些代码来更好地理解它,您可以在这里找到(有时)会出错的调用(检查Ajax调用):Link

问题在于Turbolinks大部分时间都会通过Ajax重新加载页面,这意味着典型的javascript DOM加载过程不会发生


授权

在我看来,您似乎将ajax流程绑定到了一个特定元素,如下所示:

$("element").on("click", function() { 
    $.ajax({....

    ...});
});
解决方法是使用将元素绑定到文档,并委托给所需的元素

看看你的代码,我会这样做:

$(document).on("submit", "form", function(){
    // .... your ajax code
});

我也会确保您使用(将它放在它自己的JS文件中,而不是您的视图中)。如果您给我们提供更多的上下文,我可以为您创建一个更为定制的解决方案

谢谢@Rich提供完整的答案。我试试看。你知道为什么这只是偶尔发生吗?有些请求是以正确的方式处理的,有些则不是,但“方法”永远是一样的。没问题!不确定具体细节,但对于使用Turbolinks的Rails应用程序来说,委托是一个常见问题!再次感谢您的支持!我已经按照你的建议试过了,效果很好!干得好:)谢谢你,伙计!很高兴听到这个消息