Ruby on rails 如何在Ember中处理来自服务器的重定向响应
余烬数据1.0、余烬1.5.1、rails 3.2 如何处理来自服务器的重定向响应?在余烬数据0.13中,我执行以下操作: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
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状态:
示例有效负载:工作正常。谢谢