2014-01-18 400 views
1

鉴于这种JSON响应:灰烬+把手渲染的Rails验证错误为[对象的对象]

{"username":null,"errors":{"password":["is required"],"username":["is required","is too short","is invalid"],"email":["is required","is invalid"]}} 

欲呈现每个属性的第一个错误消息。 灰烬正确地拿起错误,我能够分析他们在车把模板,如:

<div {{bind-attr class='errors.email:error'}}> 
    <label>Email Address</label> 
    {{view Ember.TextField type='email' valueBinding='model.email' placeholder='Email Address'}} 
    <small class='below'>{{errors.email}}</small> 
</div> 

{{errors.email}}呈现[object Object]或这些众多。添加.[0]firstObject将其减少为仅渲染[object Object]一次,但它不解析正确的错误消息。

回答

0

当使用ActiveModelAdapter,错误消息得到自动配对的属性/消息。正如@ kingpin2k在他的要点中解释的那样,errors.email.firstObject将得到第一个对象,从中你将需要消息属性。

我创造了这个帮手,干一番了:

Ember.Handlebars.helper('error', function(context) { 
    if(context && context.length) 
     return context[0].message; 
}); 

使用它像这样在你的HBS模板:

{{error errors.email}}