为什么Rails UJS是ajax:成功绑定被调用两次?

前端之家收集整理的这篇文章主要介绍了为什么Rails UJS是ajax:成功绑定被调用两次?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个简单的形式:
= form_for(posts_path,:id => "new_post",:remote => true) do
  = text_field_tag "post[input]"
  = submit_tag "Post!"

我绑定了一个回调ajax:success事件:

$("form#new_post").bind("ajax:success",function(xhr,data,status){
  alert("Post Created!");
});

当我点击帖子!按钮,Post Created出现两次.为什么?

我正在使用Rails 3.1,默认情况下使用的是jquery-ujs.

解决方法

这是因为当/ public / assets中存在预编译资产时,您的页面在开发模式下加载jquery_ujs代码两次.

在开发模式下,javascript requries加载了单独的标记:jquery,jquery_ujs.js,myscripts.js,最后是applications.js.当预编译的application.js存在并且从/ public / assets中使用时会发生问题 – 它包含所有以前文件的编译.这由资产触发:预编译rake任务.

解决方案是在开发时删除/ public / assets目录,然后使用application.js(来自/ app / assets / javascript),它不包含以前的文件.
一般不使用资产:预编译rake任务开发.

更新

将development.serve_static_assets = false添加到development.rb也为我解决了问题而不必担心/ public / assets.

猜你在找的Ajax相关文章