画像を作成するためのリモートフォームがあります。ファイル入力が変更されるたびに、フォームを送信します。
<%= form_for Image.new, remote: true, multipart: true do |f| %>
<!-- form omitted -->
<% end %>
自動送信:
$("#new_image input[type=file]").on("change", function() {
$("#new_image").submit();
});
画像が作成され、json が画像コントローラーで適切にレンダリングされます。
def create
@image = Image.new params[:image]
if @image.save
render json: @image, status: :success
else
render json: @image.errors, status: :unprocessable_entity
end
end
問題は、ユーザーが json 出力にリダイレクトされることです。どうしてそれが起こり得ますか?フォームは remote: true なので、リダイレクトすべきではありませんよね? 目立たないコールバックにデータを利用できるようにしたいだけです。
これを機能させるにはどうすればよいですか?
編集:application.js
//= require jquery
//= require jquery_ujs
//= require jquery-ui
//= require_tree .