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

时间:2012-01-10 03:58:13

标签: ruby-on-rails ajax redirect

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

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

如果请求格式是AJAX,那么实现重定向响应的最佳做法是什么?

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:3)

您也可以将其放在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

答案 2 :(得分:1)

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

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

或假设你做了一个ajax帖子

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