問題は、条件に基づいて、(UJSを使用して)非リモートフォームに変換して送信するようなリモートフォームがあることです。フォームにファイルがアップロードされていることに注意してください。
詳細は次のとおりです。最初にを使用してリモートフォームをレンダリングしました
= form_for @myobj, :url => {:action=>"remoteAction", :controller=>"myobjects"}, :remote => true do |f|
... (f.fields....)
HTMLを生成します:
<form id="new_myobj" class="new_myobj" method="post" accept-charset="UTF-8" data-remote="true" action="/remoteAction">
[送信]をクリックすると、予想どおり、フォームが「ASJS」で送信されます。コントローラアクションでは、送信されたフォーム内のフィールドの検証を行っています。すべての検証に合格したら、次の.js.hamlテンプレートを実行します。
$('form#new_myobj').removeAttr("data-remote");
$('form#new_myobj').attr('enctype', 'multipart/form-data');
$('form#new_myobj').attr('action', '/myobjects/regularAction');
これにより、ページ上のHTML(Firebugで確認)が次のように正常に変更されます。
<form id="new_myobj" class="new_myobj" method="post" accept-charset="UTF-8" enctype="multipart/form-data" action="/myobjects/regularAction">
フォームにはf.file_fieldが含まれているため、画像をアップロードできるようにマルチパートとして送信する必要があり、「AS JS」を送信できません。送信をクリックすると、コントローラーアクション「regularAction」が実際に呼び出されますが、それでも「ASJS」
問題は、フォームをxhr以外で送信できるように、HTMLで他に何を変更する必要があるかということです。それはヘッダーに関連していますか?