2013-12-18 35 views
8

我使用Ember Data和帶有後端的RESTful適配器。Ember Data對刪除記錄作出何種迴應?

當我刪除灰燼record.deleteRecord(); record.save()記錄的DELETE請求轉到服務器和模型將被刪除,但這個錯誤打印到JavaScript控制檯:

Extract requested, but no data given for App.ThisModel. This may cause weird problems. 

來自服務器的響應只是render json: true ,所以我將它更改爲render json: deleted_model,它爲已刪除的記錄呈現json。

擺脫了以前的錯誤,但現在刪除的記錄在Ember中重新創建。

Ember在響應中期待什麼?

回答

7

您應該發回一個200空有效的json響應{},任何返回的數據將被應用到記錄,就好像它們是屬性一樣。

http://emberjs.jsbin.com/OxIDiVU/215/edit

你也可以用無響應發回204。

http://emberjs.jsbin.com/OxIDiVU/214/edit

+0

你的回答是對的,但我有點好奇,會用屬性做什麼呢?如果刪除請求返回200,那麼資源應該已被刪除,那麼對於已刪除資源的屬性,將會使用哪些屬性? – everett1992

+0

它會將它們應用於記錄,然後將其標記爲已刪除,親戚愚蠢,但是Ember Data的_commit方法被推廣以處理創建/更新/刪除。 – Kingpin2k

4

的jQuery 1.9 no longer treats200用於JSON請求是成功的響應。您的服務器現在應該返回一個204響應DELETE空請求主體的請求。

爲Rails服務器,你可以做這樣的事情:

def destroy 
  @something.destroy! 
  head :no_content 
end 
+0

好點Sapan,我已經更新了我的答案以反映這一點。 – Kingpin2k

+0

或者更好的'render status:no_content,nothing:true'以JSON API爲例。 –

0

在餘燼1.5.1和灰燼數據1.0.0-beta.9+canary.410d62d6,我試圖返回一個空的JSON對象/數組,像{ }一樣在上面的答案中。它沒有工作。

它只適用於200響應碼和null作爲響應值。

所以也許這已經改變了,或者也取決於其他的東西......我不能說,但只告訴你什麼對我有用。