Как реализовать ответ перенаправления с AJAX-запросом в Rails 3? - PullRequest
3 голосов
/ 10 января 2012

У меня есть простой сценарий, когда я хочу запросить страницу.Формат запроса - AJAX.Если в контроллере / логике действий для этого запроса есть какая-то ошибка, я хочу перенаправить на страницу с ошибкой.Проблема в том, что перенаправление не является типом ответа JavaScript, поэтому я не уверен, будет ли оно работать.

Если ошибок нет, то я хочу, чтобы страница обновлялась с помощью соответствующего типа ответа JavaScript.

Какова наилучшая практика для получения ответов на перенаправление, учитывая, что формат запроса AJAX?

Ответы [ 3 ]

3 голосов
/ 10 января 2012

Вы также можете поместить это в 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
3 голосов
/ 10 января 2012

Этот пост в блоге разъяснил мне, что я считаю правильным способом сделать это, если ваш ответ ajax - ajax;по крайней мере, в ненавязчивой парадигме javascript.По сути, вызов ajax всегда возвращает стандартный пакет json, который может быть проанализирован на предмет полезной нагрузки или URL-адреса перенаправления.

1 голос
/ 10 января 2012

Если вы используете 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';
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...