Подтвердить что ты не робот

Магистраль уничтожает не отправляет параметры

У меня есть базовая модель, которую я пытаюсь уничтожить, но никакие параметры не отправляются с запросом, поэтому сервер возвращает ошибку "Удалить 404 не найден".

Я признаю, что моя структура немного странна, поскольку я создаю/уничтожаю элементы на основе, если они находятся в списке уже или нет.

var list_item = new MyApp.Models.ListItem({item_id: this.model.id, group_id: this.model.group_id});

    if($(e.currentTarget).hasClass('add')){

            list_item.save(list_item, { 
                success: function(response){
                     this.model.attributes.addedtolist_id = response.id
                     console.log(this.model);
                },
                error: function(){
                     alert('could not save item');
                }
           });
    } else if($(e.currentTarget).hasClass('remove')) {
         list_item.id=this.model.addedtolist_id;
         list_item.attributes.id = this.model.addedtolist_id;
         console.log(list_item);
         list_item.destroy({
             success: function(){
                alert('delete');
             },
             error: function(){
               alert('could not uncheck');
            }
   });
}

вывод консоли для list_item перед уничтожением

_escapedAttributes: Object
_previousAttributes: Object
_setting: false
attributes: Object
 id: 2
 item_id: 66
 group_id: 64
__proto__: Object
cid: "c23"
id: 2
__proto__: q

но когда я смотрю на заголовки, отправленные с запросом удаления, у меня нет никаких параметров, которые отправляются.

----------------------- обновляемые параметры отправляются, 404 все еще возвращается --------------

по рекомендации Ярослава, я добавил "заголовок" к методу destroy, но мой контроллер rails все еще возвращает ошибку DELETE 404 not found. Я просто пытаюсь вернуть список, чтобы убедиться, что получаю правильный, прежде чем уничтожить его.

Мой контроллер

 def destroy
   listitem = Listitem.find(params[:id])
   return render :json => listitem
 end
4b9b3361

Ответ 1

Я предполагаю, что вы устанавливаете url в модели в строку:

Backbone.Model.extend({
    url: '/list_items',
    //...
});

Это будет означать, что Backbone будет использовать ровно /list_items в качестве URL-адреса для всех действий. Вы должны использовать функцию:

url: function() { return '/list_items/' + encodeURIComponent(this.id) }

или используйте строку с urlRoot и добавьте функцию url по умолчанию id:

urlRoot: '/list_items'

Ответ 2

Какие параметры вы ожидаете отправить? Уничтожает по умолчанию только запрос удаления http по URL без тела или любых дополнительных заголовков. Аргумент params положен на функцию jquery ajax, поэтому вы можете указать там заголовки:

model.destroy({
...
    headers : {
        your_header : 123
    }
})

Ответ 3

list_item.destroy( **l** {
  success: function(){
  alert('delete');
}, ... );

Это лишний номер один проблема?