0

アプリでjquery ファイル アップロードユーティリティを使用しています。通常、レールに次のようなコードがある場合...

if @course_module.save
  flash[:success] = "Class created!"
  redirect_to course_course_modules_path(@course)
else
  render 'new'
end

フォームにエラーがある場合はエラー メッセージが表示され、正常に保存された場合は別のページにリダイレクトされます。ただし、jquery プラグインを介してページが送信された場合はそうではありません。その理由は、json オブジェクトを返す必要があるためです....次のようなものです。

         format.json {  
          render ':json => [@course_module.to_jq_upload].to_json ' 
        }

json を返す代わりに、最初のコード スニペットを実行するにはどうすればよいですか? 保存が成功した場合はリダイレクトするか、そうでない場合はエラー メッセージを表示しますか? 私は次のようなものを試しました...

render 'new'

しかし、それはうまくいきませんでした。

4

1 に答える 1

0

通常の ajax 呼び出しには、success メソッドと error メソッドがあります。json 応答に、目的のパスを値として持つ redirect_url キーを追加し、success メソッド内でこの URL にリダイレクトします。

$.ajax({
 type: "GET",
 url: '/path to your controller',
 datatype: 'json',
 success: function(data) {
   window.location.href = data.redirect_url
 };

});

json 応答は、コントローラー内で次のようになります。

render :json => {course_module: @course_module.to_jq_upload, redirect_url: course_course_modules_path(@course) }.to_json 

それがあなたが探しているものであることを願っています

于 2012-10-21T09:16:09.563 に答える