Ruby on rails Ember和Rails,处理后端错误
我正在尝试向我的Ember/Rails应用程序添加一些后端验证。因此,阅读所有我能找到的帖子,我做了以下工作:Ruby on rails Ember和Rails,处理后端错误,ruby-on-rails,ember.js,Ruby On Rails,Ember.js,我正在尝试向我的Ember/Rails应用程序添加一些后端验证。因此,阅读所有我能找到的帖子,我做了以下工作: actions: { create: function(permission){ var route = this; permission.save().then(function(){ route.transitionTo('permissions'); }); } } 在我的Rails模型中,我添加了验证项的存在性和唯一性 在Rail
actions: {
create: function(permission){
var route = this;
permission.save().then(function(){
route.transitionTo('permissions');
});
}
}
在我的Rails模型中,我添加了验证项的存在性和唯一性
在Rails控制器中,我有一个在尝试保存后调用的方法:
def validate(permission)
if permission.valid?
render json: permission
else
render json: {errors: permission.errors}, status: :unprocessable_entity
end
end
在余烬路线中,我有以下内容:
actions: {
create: function(permission){
var route = this;
permission.save().then(function(){
route.transitionTo('permissions');
});
}
}
当从后端返回任何错误时,我得到的只是控制台上的一条消息:
Error: Assertion Failed: Error: The backend rejected the commit because it was
invalid: {name: can't be blank, description: can't be blank}
"InvalidError@http://127.0.0.1/assets/ember-data.js?body=1:3512
ActiveModelAdapter<.ajaxError@http://127.0.0.1/assets/ember-data.js?body=1:235
superWrapper@http://127.0.0.1/assets/ember.js?body=1:1295
RESTAdapter<.ajax/</hash.error@http://127.0.0.1/assets/ember-data.js?body=1:1530
jQuery.Callbacks/fire@http://127.0.0.1/assets/jquery.js?body=1:3100
jQuery.Callbacks/self.fireWith@http://127.0.0.1/assets/jquery.js?body=1:3212
done@http://127.0.0.1/assets/jquery.js?body=1:9313
.send/callback@http://127.0.0.1/assets/jquery.js?body=1:9721
"
错误:断言失败:错误:后端拒绝提交,因为提交失败
无效:{name:不能为空,description:不能为空}
"InvalidError@http://127.0.0.1/assets/ember data.js?body=1:3512
ActiveModelAdapter您需要处理save
-承诺的故障状态,以防止余烬数据将故障冒泡到控制台
permission.save().then(function(){
route.transitionTo('permissions');
}, function() {
// Couldn't save, do nothing about it.
});
这将防止断言错误阻止执行,并允许Ember数据发挥其魔力,将后端返回的错误添加到您的模型实例中。我试图将代码添加到Ember-Data.js中,以尝试了解发生了什么,但这对我没有任何帮助。我仍然在寻找解决方案,这里。似乎控制台中出现的错误并没有阻止其余JS的执行,从我所知,但我不是100%确定。我仍然不明白为什么iError和error没有正确设置。还有其他人遇到过这样的问题吗?这解决了它。现在我有一个新问题,所以我想是时候创建了另一个帖子。谢谢!