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 に答える