如何在Rails 3中使用AJAX请求实现重定向响应?

我有一个简单的场景,我想要一个页面。 请求格式是AJAX。 如果该请求的控制器/操作逻辑中存在一些错误,我想重定向到错误页面。 问题是重定向不是JavaScript响应类型,所以我不确定它是否会起作用。

如果没有错误,那么我希望通过适当的JavaScript响应类型更新页面。

考虑到请求格式是AJAX,实现重定向响应的最佳做法是什么?

如果您的ajax响应是ajax,那么这篇博文可以让我了解我认为正确的方法。 至少,在不引人注目的javascript范例中。 在本质上,ajax调用总是返回一个标准的json包,可以解析它的信息有效负载或重定向url。

您还可以将它放在ApplicationController以便为AJAX请求正确地重定向:

 class ApplicationController < ActionController::Base # Allows redirecting for AJAX calls as well as normal calls def redirect_to(options = {}, response_status = {}) if request.xhr? render(:update) {|page| page.redirect_to(options)} else super(options, response_status) end end end 

如果你使用jQuery,你可以使用.ajaxError()

 $(document).ajaxError(function(event, request, settings){ location.href = '/error.html'; }); 

或者假设你做了一个ajaxpost

 var jqxhr = $.post("example.php", function() { // Do what it completed will do }) .error(function() { location.href = '/error.html'; })