Ruby on rails AJAX回调中的重定向

Ruby on rails AJAX回调中的重定向,ruby-on-rails,ajax,Ruby On Rails,Ajax,在我的应用程序中,我调用一个AJAX请求,在该请求发生之后,我希望重定向到另一个路径。我的问题是我不知道怎么做。有人告诉我,我可以“呈现json并在ajax请求的回调中响应它”,但我已经尝试了很长时间,并没有完全理解它 阿贾克斯: 更新操作: def update current_submission.update_attributes(secret_params) render :json => { :message => "Success!" } end

在我的应用程序中,我调用一个AJAX请求,在该请求发生之后,我希望重定向到另一个路径。我的问题是我不知道怎么做。有人告诉我,我可以“呈现json并在ajax请求的回调中响应它”,但我已经尝试了很长时间,并没有完全理解它

阿贾克斯:

更新操作:

def update    
  current_submission.update_attributes(secret_params)    

  render :json => { :message => "Success!" }
end
我的AJAX请求和呈现json都很好,但我不知道如何重定向。在
update
方法中简单地将
redirect\u放入
,没有任何作用。到目前为止,我找到的唯一解决方案是:

respond_to do |format|
  format.js { render js: "window.location.href = '#{mypath_path}'" }
end
有人告诉我这是一个坏习惯,当我发现代码时,我认为是这样


向正确的方向稍微推动一下就好了,我仍然不完全知道AJAX请求和rails操作是如何/何时/以什么顺序启动的。

返回有关您希望在JSON响应中重定向到的路径的信息:

def update    
  current_submission.update_attributes(secret_params)    

  render :json => { :new_path => "#new_path" }
end
然后在
success
函数中使用
location.replace()
更新浏览器url:

$.ajax({
  url: sub_url,
  type: 'POST',
  data: form_data
}).success(function(d){
  // update location on success
  location.replace(d.new_path);
}).fail(function(){
  //stuff
});

考虑使用<代码> .Rebug()/<代码>。我正在努力理解这一点。看起来
d
是在我的操作中从我的
render json
中提取的对象。然后它被传递到success函数内部的函数中。从这里,我们将使用从传入对象(
d.new\u path
)访问的数据替换位置。是这样吗?如果是这样的话,我不知道在这种情况下渲染是如何/何时工作的。jQuery使第一个参数中的
success
函数可以使用它。如果您使用Fiddler,您可以看到结果通过导线发送。老实说,我从未真正使用过Ruby:),但我在Python和.NET中也做过类似的事情。
$.ajax({
  url: sub_url,
  type: 'POST',
  data: form_data
}).success(function(d){
  // update location on success
  location.replace(d.new_path);
}).fail(function(){
  //stuff
});