これをチェックしてください。次の構文で作成されたかなり単純なフォームがあります。
<%= form_for([@issue, @issue_order], :remote => true) do |f| %>
ページのロジックにより、フォームは実際には次のように JavaScript を介して呼び出されます。
$('#new_issue_order')[0].submit()
コントローラーは、少しのロジックを実行して ajax リクエストを処理し、次のようなものをスローします。
respond_to do |format|
format.js
end
この応答を処理する AJAX は、次の JavaScript にあります。
$('#new_issue_order').on('ajax:success', issueOrder.processOrder)
..........
processOrder: function(e, data, status, xhr) {
$('.sign-up-errors').empty();
errors = xhr.getResponseHeader('X-Flash-Error').split(',');
for (i=0; i < errors.length; i++) {
$('.errors').append($('<p>' + errors[i] + '</p>'));
}
setTimeout(function() {
$('.errors').empty();
}, 3500);·
}
これでリモートリクエストに応答できると思いましたが、代わりに次のエラーが表示されます。
ActionController::UnknownFormat
ビューで new.js.erb を作成しようとしましたが (それがあった新しいページに対応するため)、それでも同じエラーが発生します。ビジネス上の理由から、アセット内の javascript ファイルで JavaScript 処理を維持したいので、サクセス ハンドラー AJAX を new.js.erb コードに移行しようとはしていません。
シームレスな AJAX 応答を取得するにはどうすればよいですか? 以前にやったことがありますが、respond_to はいつも私を混乱させました。