Backbone model.destroy () invocando a função de retorno de chamada de erro mesmo quando funciona be

Eu tenho um Backbone.js modelo que estou tentando destruir quando o usuário clica em um link na visualização do modelo. A visualização é algo assim (pseudocódigo porque é implementado em CoffeeScript, que pode ser encontrado na parte inferior da pergunta

var window.ListingSaveView = Backbone.View.extend({
  events: {
    'click a.delete': 'onDestroy'
  },

  onDestroy: function(event){
    event.preventDefault();
    this.model.destroy({
      success: function(model, response){
        console.log "Success";
      },
      error: function(model, response){
        console.log "Error";
      }
    });
  }
});

Quando clico nodelete no navegador, sempre receboError logado no console, mesmo que meu servidor registre a destruição bem-sucedida do registro do banco de dados associado e retorne uma resposta de 200. Quando atualizo a página (fazendo com que a coleção seja renderizada novamente a partir do banco de dados), o modelo que eu excluí desaparec

Um interessante é que, quando eu registro oresponse no retorno de chamada de erro, possui statuscode200 indicando sucesso, mas também informastatusText: "parseerror" o que isso significa. Não há erro nos logs do meu servidor.

O que estou fazendo de errado

Esta é a resposta do servidor:

  Object
    abort: function ( statusText ) {
    always: function () {
    complete: function () {
    done: function () {
    error: function () {
    fail: function () {
    getAllResponseHeaders: function () {
    getResponseHeader: function ( key ) {
    isRejected: function () {
    isResolved: function () {
    overrideMimeType: function ( type ) {
    pipe: function ( fnDone, fnFail ) {
    promise: function ( obj ) {
    readyState: 4
    responseText: " "
    setRequestHeader: function ( name, value ) {
    status: 200
    statusCode: function ( map ) {
    statusText: "parsererror"
    success: function () {
    then: function ( doneCallbacks, failCallbacks ) {
    __proto__: Object

qui está a ação do servidor que destrói interage com (Ruby on Rails)

  # DELETE /team/listing_saves/1.json
  def destroy
    @save = current_user.team.listing_saves.find(params[:id])
    @save.destroy
    respond_to do |format|
      format.json { head :ok }
    end
  end

E aqui está a implementação real do CoffeeScript da Backbone View para pessoas que preferem assim:

class MoveOutOrg.Views.ListingSaveView extends Backbone.View
  tagName: 'li'
  className: 'listing_save'
  template: JST['backbone/templates/listing_save']
  events:
    'click a.delete_saved': 'onDestroy'

  initialize: ->
    @model.bind 'change', this.render
  render: =>
    renderedContent = @template(@model.toJSON())
    $(@el).html(renderedContent)
    this
  onDestroy: (event) ->
    event.preventDefault() # stop the hash being added to the URL
    console.log "Listing Destroyed"
    @model.destroy
      success: (model, response)->
        console.log "Success"
        console.log model
        console.log response

      error: (model, response) ->
        console.log "Error"
        console.log model # this is the ListingSave model
        console.log response

questionAnswers(5)

yourAnswerToTheQuestion