私のアプリケーションでは、AJAXリクエストを呼び出しています。リクエストが発生した後、別のパスにリダイレクトしたいと思います。私が持っている問題は、これをどうやって行うのか正確にはわかりません。私は "jsonをレンダリングして、Ajaxリクエストのコールバックの中でそれに応答できる"と暗示されていましたが、私はかなり長い間試してきました。リダイレクトAJAXコールバック内部
AJAX:
$.ajax({
url: sub_url,
type: 'POST',
data: form_data
}).success(function(){
//stuff
}).fail(function(){
//stuff
});
更新アクション:
def update
current_submission.update_attributes(secret_params)
render :json => { :message => "Success!" }
end
私のAJAX要求とレンダリングすべてが正常に動作JSONは、私はしかしリダイレクトする方法について迷ってしまいました。ただredirect_to
をupdate
メソッドに入れるだけでは何もしません。私がこれまでに発見した唯一の解決策はこれです:私は言われた
respond_to do |format|
format.js { render js: "window.location.href = '#{mypath_path}'" }
end
は悪い習慣だったと私は、コードを見つけたとき、私はそうと仮定しました。
AJAXリクエストとレールアクションがどのように発射されるのか、どのように/いつ/どのような順番になっているのかまだ十分には分かりません。あなたはJSONレスポンスににリダイレクトしたいパスについて
'使用することを検討してください。 replace() '。 – Liroy
OK - 私は 'replace()'を使う答えを更新しました。 – dana
@dana恐ろしい、それは完全に動作します。私はこれを理解しようとしている。 'd'は私の' render json'から引き出されたオブジェクトです。その後、成功関数内の関数に渡されます。ここからは、渡されたオブジェクト( 'd.new_path')からアクセスしたデータで置き換えられます。 そうですか?もしそうなら、私は、この場合レンダリングがどのように/いつレンダリングされたかは分かりませんでした。 –