Ruby on rails 如何在Ember中处理来自服务器的重定向响应

Ruby on rails 如何在Ember中处理来自服务器的重定向响应,ruby-on-rails,ember.js,ember-data,Ruby On Rails,Ember.js,Ember Data,余烬数据1.0、余烬1.5.1、rails 3.2 如何处理来自服务器的重定向响应?在余烬数据0.13中,我执行以下操作: Staas.Adapter = DS.RESTAdapter.extend didCreateRecord: (store, type, record, payload) -> if payload.redirect window.location.replace payload.redirect return @_sup

余烬数据1.0、余烬1.5.1、rails 3.2

如何处理来自服务器的重定向响应?在余烬数据0.13中,我执行以下操作:

Staas.Adapter = DS.RESTAdapter.extend
  didCreateRecord: (store, type, record, payload) ->
    if payload.redirect
      window.location.replace payload.redirect
      return

    @_super(store, type, record, payload)
但现在适配器中没有didCreateRecord方法。我希望实现通用解决方案,而不是在每个保存承诺中


谢谢。

您可以重新打开RESTAdapter并修改所有实例的ajax方法

DS.RESTAdapter.reopen({
    ajax: function(url, type, hash) {
      var adapter = this;

      return new Ember.RSVP.Promise(function(resolve, reject) {
        hash = adapter.ajaxOptions(url, type, hash);

        hash.success = function( json ) {
          Ember.run(null, resolve, json);
        };

        hash.error = function(jqXHR, textStatus, errorThrown) {
          Ember.run(null, reject, adapter.ajaxError(jqXHR));
        };

        Ember.$.ajax(hash);
      }, "DS: RestAdapter#ajax " + type + " to " + url).then(function(json){
        if(json && json.redirect){
          //redirect here
          alert('redirect');
        }
        return json;
      }, function(jqXHR){
        if(jqXHR.status == 302){  
          //redirect here
          alert('redirect');
        }
        return jqXHR;
      });
    },

  });
示例302状态:


示例有效负载:

工作正常。谢谢