2012-07-07 8 views
16

私のアプリには多くの異なるフォームがあり、すべてがremote: trueを使用しています。しかし、ajax呼び出しを使用しないため正しく動作しません。form_tag with remote:trueはajaxリクエストを作成しません

<form accept-charset="UTF-8" action="/mycontroller/upload_file_ajax" data-remote="true" enctype="multipart/form-data" method="post"> 
    <input name="utf8" type="hidden" value="✓"> 
    <input name="authenticity_token" type="hidden" value="1234"></div> 
    <input id="file" name="file" type="file"> 
    <input name="commit" type="submit" value="upload"> 
</form> 

とルートエントリ:タグがどのように見える

<%= form_tag(upload_file_ajax_path, remote: true, multipart: true) do %> 
    <%= file_field_tag(:file) %> 
    <%= submit_tag("upload") %> 
<%end%> 

post "mycontroller/upload_file_ajax", as: "upload_file_ajax" 

しかし、クローム開発ツールでコールをチェックするように見える、クリーンアップ

ヘッダーには、

Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 

ではなく、他の形態を好きなように見える:

Accept:*/*;q=0.5, text/javascript, application/javascript, application/ecmascript, application/x-ecmascript 

私は

<%= stylesheet_link_tag "application", :media => "all" %> 
<%= javascript_include_tag "application" %> 
<%= csrf_meta_tags %> 

私のレイアウトにJSファイルを追加したと私はapplication.jsのうち、すべての私のJSコードを削除しても、ファイル(//= require jquery ...を除く)は、フォームが正しく機能していません。

私は何を欠席しましたか?

答えて

25

ファイルのアップロードにAJAXを使用することはできません。つまり、通常です。

しかし、あなたのリモートフォームにこの機能を追加する素晴らしい宝石、Remotipartは、あります。 application.js

//= require jquery.remotipart 
+0

のMEA culpaプラグインによって提供さajaxSubmitメソッドを使用してAJAXリクエスト経由でファイルをアップロードするJquery Formプラグインを使用しようとすることができ、私はこれを忘れてしまいました。 Grrr ...ありがとう! – Bjoernsen

+0

あなたは私に何時間もの欲求不満を救っただけです。私はあなたがファイルのアップロードにajaxを使用できないことを知っていませんでした。 Rails 4.2.5でテストされていますが、これはまだ動作しています。文字通りremotipartがドロップされ、フォームが機能し始めました。ありがとう! –

2

あなたの経験は、ファイルがAJAXリクエストにより提出することができないことに起因する問題で

gem 'remotipart', '~> 1.0' 

あなたは

関連する問題