Rails - Turbolinks与Ajax Json的回应

时间:2014-02-07 09:46:18

标签: ruby-on-rails ajax json ruby-on-rails-4 turbolinks

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

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

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

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

1 个答案:

答案 0 :(得分:1)

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


<强>团

听起来像你将ajax进程绑定到特定元素,如下所示:

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

    ...});
});

解决这个问题的方法是使用javascript delegation将元素绑定到文档,并委托给您需要的元素

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

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

我还要确保你使用unobtrusive javascript(把它放在它自己的JS文件中,而不是你的视图中)。如果您给了我们更多的背景信息,我可以为您创建更加量身定制的解决方案