Rails プロジェクトで AJAX 経由で画像をアップロードするためにRemotipartを使用しています。画像のアップロードは Rails コントローラーによって処理され、正常に動作します。
ただし、フォームは複数のステップからなるフォームであり、画像のアップロードは最初のステップにすぎません。ビューでレンダリングされた画像をアップロードした後、必要なのは、画像がアップロードされた場合は次のステップに進むことですが、その方法がわかりません。AJAX応答を待っていると、これを機能させることさえできません:
$(document).ready (e) ->
$("form").bind "ajax:complete", (e, data, status, error) ->
if data.status is 200 or data.status is 201
alert 'yum'
私のコントローラーは次のようになります。
def upload
if request.post?
dir = "/img/" + current_user.slug + "/pictures/queue/"
ndir = dir + view_context.random_s(10) + '.jpg'
File.rename(params[:file].tempfile, "public" + ndir)
render :text => "$('#picture #photo').html('<img src=\"#{ndir}\">');"
end
end
しかし、私が言ったように、この部分はうまく機能します。
render :text
イベントハンドラーをフォームに追加するか、コントローラーで使用するだけでそれを行うことができると思いますが、それは良いことではありません。
これについてSOでいくつかの回答を見ましたが、誰も機能しません。