在我的应用程序中,我调用了一个AJAX请求,在发出请求之后,我想重定向到另一个路径。我遇到的问题是我不知道该怎么做。有人告诉我,我可以“在ajax请求的回调中”渲染json并对其做出响应。“但是我已经尝试了很长一段时间并且不太明白。
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请求和rails动作的触发时间/时间/顺序。
答案 0 :(得分:2)
返回有关您希望在JSON响应中重定向到的路径的信息:
def update
current_submission.update_attributes(secret_params)
render :json => { :new_path => "#new_path" }
end
然后在location.replace()
函数中使用success
来更新浏览器网址:
$.ajax({
url: sub_url,
type: 'POST',
data: form_data
}).success(function(d){
// update location on success
location.replace(d.new_path);
}).fail(function(){
//stuff
});