错误406,remote:true Ajax表单仍然导致重定向

时间:2013-01-19 00:35:46

标签: ruby-on-rails ruby-on-rails-3 jquery

这让我整天都难过。

我的应用程序提供上传文档,上传后运行create.js.erb并将新记录添加到页面。

我的HTML看起来像这样,

<div id="doc_upload">
  <%= form_for Document.new, remote: true do |f| %>
  <%= f.file_field :file, multiple: true, name: "document[file]" %>
  <%= f.hidden_field :plot_id %>
  <%= f.submit 'upload' %>
  <% end %>
</div>

我在documents目录中有一个create.js.erb文件。我目前正在使用JQuery文件上传,拖放文件上传不会引起任何问题。但是,当我使用此表单手动选择文件并上传时,我得到:

  • 406 HTTP错误
  • 页面重定向到/ documents
  • 当我回去时,该文件已成功上传并保存。

标题如下。

Request URL:http://localhost:3000/documents
Request Method:POST
Status Code:406 Not Acceptable
Request Headersview source
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8}

我的控制器是:

def create
  @document = Document.create(params[:document])
  respond_to do |format|
    format.js
  end
end

正如我所说,这真让我挠头,因为Ajax请求似乎没有被解雇。这是否意味着它可能与不引人注目的JS没有拿起远程真实数据类型有关。这是我能想到重定向的唯一原因。

如果是这样,我如何确认并解决此问题?

任何帮助都会很棒。

罗斯

1 个答案:

答案 0 :(得分:4)

如果您的表单中有文件上传,则必须添加:multipart => true

但是you cannot post a multipart form via AJAX