4

这让我一整天都难过。

我的应用程序提供文件上传,一旦上传,它就会运行 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>

我在文档目录中有一个 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 没有拾取远程真实数据类型有关。这是我能想到重定向的唯一原因。

如果是这样,我如何确认和解决这个问题?

任何帮助都会很棒。

罗斯

4

1 回答 1

4

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

您不能通过 AJAX 发布多部分表单

于 2013-01-19T08:34:04.967 回答