2013-12-18 6 views
8

Używam Ember Data z adapterem RESTful z backendem szyn.Czego Ember Data oczekuje w odpowiedzi na usunięcie rekordu?

Kiedy usunąć rekord z Ember record.deleteRecord(); record.save()DELETE wniosek trafia do serwera i model zostaje usunięty, ale ten błąd jest drukowany na konsoli javascript:

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

Odpowiedź z serwerem zostało tylko render json: true , więc zmieniłem go na render json: deleted_model, który renderuje json dla usuniętego rekordu.

To pozbyło się poprzedniego błędu, ale odtworzony rekord został odtworzony w Ember.

Czego Ember spodziewa się w odpowiedzi?

Odpowiedz

7

Powinieneś odesłać 200 z pustą poprawną odpowiedzią jsonową {}, wszelkie zwrócone dane zostaną zastosowane do rekordu tak, jakby były atrybutami.

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

Dodatkowo można odesłać 204 bez odpowiedzi.

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

+0

Twoja odpowiedź jest właściwa, ale jestem trochę ciekawy, co by zrobił Ember z atrybutami? Jeśli żądanie usunięcia zwraca 200, zasób powinien zostać usunięty, co zrobiłby ember z atrybutami usuniętego zasobu? – everett1992

+0

Zostałby zastosowany do rekordu, a następnie oznaczony jako usunięty, krewny głupi, ale metoda uprawnienia Ember Data jest uogólniona do obsługi tworzenia/aktualizacji/usuwania. – Kingpin2k

4

jQuery 1.9 no longer treats odpowiedzią 200 dla JSON żądanie jako sukces. Serwer powinien teraz zwracać odpowiedź 204 dla żądań DELETE z pustym tekstem odpowiedzi.

Na serwerze szynach, można zrobić coś takiego:

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

Dobry punkt Sapan, zaktualizowałem moją odpowiedź, aby to również odzwierciedlić. – Kingpin2k

+0

Albo lepiej 'status wyświetlania: no_content, nic: true' na przykład w przypadku JSON API. –

0

W Ember Ember-1.5.1 i danych 1.0.0-beta.9+canary.410d62d6, starałem się zwrócić pusty obiekt/json tablicę, jak { }, jak w powyższej odpowiedzi. To nie zadziałało.

Działało tylko z kodem odpowiedzi 200 i null jako wartością odpowiedzi.

Więc może to się zmieniło, albo to zależy od innych rzeczy ... Nie mogę powiedzieć, ale tylko powiedzieć, co zadziałało dla mnie.

Powiązane problemy