【问题标题】:Ember + Handlebars render Rails validation errors as [object Object]Ember + Handlebars 将 Rails 验证错误呈现为 [object Object]
【发布时间】:2014-01-18 00:04:44
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    江户,这看起来工作正常。

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

    【讨论】:

      【解决方案2】:

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

      我创建了这个助手,稍微干了一点:

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

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

      {{error errors.email}}
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-03-07
        • 2015-04-03
        • 1970-01-01
        • 2015-08-14
        • 2020-04-22
        • 1970-01-01
        • 2021-10-12
        • 2021-11-03
        相关资源
        最近更新 更多