【问题标题】:Rails Ajax Error: "Turbolinks is not defined"Rails Ajax 错误:“Turbolinks 未定义”
【发布时间】:2022-01-22 17:19:29
【问题描述】:

我正在使用 Rails 4.2,我想向我的服务器发送一个 ajax 请求。但是请求总是失败并出现错误Turbolinks is not defined。我的 rails 控制台返回 200 ok 响应。 我正在使用'jquery-turbolinks' gem。

提前致谢!

阿贾克斯

$.ajax({
  type: "PUT",
  url: "http://localhost:3000",
  data: xx,
  success: function(data){
     alert("success");
  },
  error: function(XMLHttpRequest, textStatus, errorThrown) {
       alert("some error");
  }
});

控制器

  def upvote
     # code here
     @vote.save
     respond_to do |format|
       format.html { redirect_to :back }
       format.json { head :ok }
       format.js { head :ok }
     end
   end

【问题讨论】:

    标签: ruby-on-rails ajax turbolinks


    【解决方案1】:

    在 application.js 中,您是否需要 jquery 和 turbolinks 之间的 jquery.turbolinks,如下所示?

    //= require jquery
    //= require jquery.turbolinks
    //= require jquery_ujs
    //= require masonry/jquery.masonry
    //= require turbolinks
    //= require_tree .
    

    如果您的 turbolinks 版本是 5,jquery-turbolinks gem 不支持 turbolinks 5。 因此,目前,您必须添加 JS 以实现引用 this issue 的兼容性(请参阅 Lowryderch 的评论)。 将 turbolinks-compatibility.coffee 放在 app/assets/javascripts/ 文件夹下。

    【讨论】:

    • 我相信他是
    • 您是否在 application.js 中安装了masonry-rails gem 和必需的masonry/jquery.masonry? (我更新了我的答案)
    • 我已经安装了 masonry-rails
    • //= 需要 jquery //= 需要 jquery_ujs //= 需要 jquery.turbolinks //= 需要 social-share-button //= require_tree 。 //= 需要 masonry/jquery.masonry //= 需要引导链轮
    • 我猜你正在使用 turbolinks 5,而 jquery-turbolinks 还不支持它。我有同样的问题,我的 JS 没有工作,但我用更新的答案解决了。