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ファイルのアップロードを使用していますが、ドラッグアンドドロップによるファイルのアップロードで問題は発生しません。ただし、このフォームを使用してファイルを手動で選択してアップロードすると、次のようになります。

  • 406HTTPエラー
  • ページは/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 に答える