加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 22:54:18 所属栏目:百科 来源:网络整理
导读:我有一个简单的形式: = 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(
我有一个简单的形式:
= 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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读