406进行ajax调用时出现不可接受的错误

时间:2014-01-29 09:29:44

标签: jquery ruby-on-rails ajax coffeescript

我的.js.coffee文件中有以下代码片段:

$.ajax({
      url: '/attachinary_files/' + id
      method: 'put'
      }).done(//do something)

在我的浏览器控制台中,我收到错误:

406 Not Acceptable

我无法找到原因。我在application.js文件中需要必要的文件,例如:

//= require jquery
//= require jquery_ujs
//= require_tree .

我无法找到我所缺少的东西。任何帮助将非常感激。感谢:)

编辑:

控制器

def update
    super
    attachinary_file = AttachinaryFile.find(params[:id])
    AttachinaryFile.where(attachinariable_id: attachinary_file.attachinariable_id)
      .update_all(is_primary: false)
    attachinary_file.update_column(:is_primary, true)
    respond_to do |format|
      flash.now[:notice] = nil
    end
  end

3 个答案:

答案 0 :(得分:2)

您缺少导致HTTP 406错误的内容类型。

更新您的ajax代码以包含响应的数据类型:

$.ajax({
  url: '/attachinary_files/' + id
  method: 'put'
  dataType: 'script'
}).done(//do something)

请参阅Data-Type (with jQuery)了解更多详情。

答案 1 :(得分:1)

1)确认您的控制器接受js通话

2)在你的JS代码中,指定你想要JS格式的结果,带标题或url:

url: '/attachinary_files/' + id + '.js'

3)如果还不够,在你的控制器中,指定你为JS返回的内容:

respond_to do |format|
  flash.now[:notice] = nil
  format.js { render js: "alert('Hello Rails');" }
end

答案 2 :(得分:0)

我使用的是Spring 3.2.5并且遇到了这个错误。 通过使用3.1.1

解决

406 Not Acceptable: Spring 3.2 + JSON + AJAX