应该很容易的东西,但我无法弄明白。如何设置路由器,控制器和模板来处理添加记录,从服务器报告错误?
我尝试了几件事,最新设置路由器,以便/users/new
加载正确的模板和控制器:
App.Router.map(function() {
this.resource('users', function() {
this.route('new')
});
});
模板是:
<form {{action 'submit' on='submit'}}>
<div class="form-group">
<label for="name">Name</label>
{{input id='name' placeholder='Enter user name' class='form-control' value=name}}
</div>
<button type="submit" class="btn btn-default">Save</button>
</form>
<div class="error">
{{errors.content}}
</div>
在提交时,控制器会创建一个新记录并将其保存:
App.UserNewController = Ember.ObjectController.extend({
actions: {
submit: function() {
var user = this.store.createRecord('user', {name: this.get('name')});
user.save();
}
}
});
模板显示正常,如果我尝试使用无效数据保存(缺少名称),我会从服务器收到400错误,报告需要“名称”。根据文档,此错误附加到model.errors
,并在firefox中检查它显示这种情况,但它没有显示在模板中。我做错了什么?
第二个问题是,如果输入名称,则不会将其添加到记录中。实际上,this.get('name')
会返回undefined
。 AFAIK我正在做的一切都很正确,但显然我有些缺失。
我的另一个问题是,如果我搞砸了几次,并且在没有输入有效数据的情况下单击“保存”,则ember每次都会创建一个新的空白记录。我在正确的地方打电话给createRecord
,还是有更好的方法来解决它?
答案 0 :(得分:0)
引起我注意的第一件事是控制器:
它应该是UsersNewController
而不是UserNewController
(请注意用户之后的s。)
其余对我来说很好看。我把你的代码带到了jsbin,它起作用了:http://emberjs.jsbin.com/wohob/1/edit