0

我最近升级到了 Ember.js 1.0 的金丝雀版本。升级后,Ember 无法再解析来自服务器的验证错误。我处理这样的表单提交操作:

submit: (event, view) ->
  @get('model').save().then ((response) =>
    @transitionToRoute('organization.timeline', @content)
  ), (response) =>
    @set "errors", response.responseText

在更新到金丝雀版本之前,这按预期工作。现在,当验证失败时出现此错误:

TypeError: jsonErrors is not an object

这发生在对 的调用期间save,因此即使我将代码减少为:

submit: (event, view) ->
  @get('model').save()

我仍然得到错误。

我在 Tom Dale 的一次演讲中听说 Ember 正在推出一个新系统来处理验证错误,我假设这就是导致冲突的原因。我找不到这种新方法的任何文档(甚至是拉取请求)。如果有人能指出我正确的方向,将不胜感激。

4

1 回答 1

0

看起来我需要更改发送错误的方式。我正在使用 Rail 后端。响应代码如下所示:

def create
  organization = Organization::Master.find(params[:id])
  if organization.update_attributes(organization_params)
    render json: organization, status: 201
  else
    render json: organization.errors, status: 422
  end
end

Ember 现在支持一种更简单的方法:

def create
  organization = Organization::Master.find(params[:id])
  organization.update_attributes(organization_params)
  respond_with organization
end

这样,Ember 就能够解析错误。

于 2013-10-22T19:11:51.293 回答