1

画像を作成するためのリモートフォームがあります。ファイル入力が変更されるたびに、フォームを送信します。

<%= 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 .
4

1 に答える 1

1

ヘルパー JavaScript が含まれていることを確認してください。

//= require jquery_ujs

これは、ビューが参照する Javascript ファイルの 1 つにある必要があります (または、application.js が含まれるのを妨げるような変更をしていないと仮定して、application.js に入れることができます)。そうでない場合は、Firebug または同様の開発者ツールを使用して、javascript のエラーまたは警告を探します。

于 2012-10-31T17:00:29.500 に答える