Ember + Handlebars将Rails验证错误呈现为[object Object]

时间:2014-01-18 00:04:44

标签: javascript ruby-on-rails json ember.js handlebars.js

鉴于此json的回应:

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

我想呈现每个属性的第一条错误消息。 Ember正确地选择了错误,我可以在Handlebars模板中解析它们,例如:

<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]一次,但它不会解析正确的错误消息。

2 个答案:

答案 0 :(得分:0)

江户,看起来它运作正常。

http://emberjs.jsbin.com/OZaNAYuc/1/edit

答案 1 :(得分:0)

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

我创建了这个助手,让它干涸了一下:

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

在你的hbs模板中使用它:

{{error errors.email}}