2013-10-22 60 views
0

我最近升級到了Ember.js 1.0的金絲雀版本。升級後,Ember不能再解析來自服務器的驗證錯誤。我處理表單提交操作是這樣的:TypeError:jsonErrors不是對象

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正在推出一個處理驗證錯誤的新系統,我認爲這是導致衝突的原因。我無法找到任何文件(即使是拉請求)這種新方法。如果任何人都可以指引我正確的方向,它將不勝感激。

回答

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 

灰燼現在支持一個更簡單的方法:

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

就這樣,灰燼是能夠解析錯誤。