2015-04-30 4 views
0

Я хочу использовать метод delete для моей базовой модели, но по какой-то причине магистраль не включает идентификатор модели в запрошенный URL. Чтобы удалить мою модель, мне нужно запустить следующий запрос: DELETE /api/v1/places/12/place_users/12. Вот мой код:Backbone.Model destroy не включает идентификатор модели в url

# place_user.model.js 
var PlaceUserModel = Backbone.Model.extend({ 
    url: function() { 
    return this.urlRoot; 
    }, 

    initialize: function(data, options) { 
    this.urlRoot = '/api/v1/places/' + options.placeId + '/place_users' 
    }, 
}); 

И я пытаюсь удалить, что с помощью:

# PlaceUsersCollection fetches it's results from a remote api 
placeUsers = new PlaceUsersCollection({placeId: 12}).fetch(); 

# it's obviously more complicated in the app but let's say i just want to 
# remove first model 
placeUsers.models[0].destroy; 

И что код производит DELETE запрос /api/v1/places/12/place_users (без модели идентификатор в комплекте). Я не уверен, что еще я могу опубликовать здесь, чтобы облегчить мне помощь, поэтому, пожалуйста, спросите, что вам нужно.

Заранее благодарен!

ответ

0

Это потому, что у вас определена функция URL, которая просто возвращает urlroot.

Если вы меняете свою модель, чтобы посмотреть, как это должно работать:

# place_user.model.js 
var PlaceUserModel = Backbone.Model.extend({ 
    urlRoot: function() { 
    return '/api/v1/places/' + this.options.placeId + '/place_users' 
    } 
}); 

initialize функция будет вызываться автоматически при создании нового экземпляра, если она определена. Перечисленные параметры хранятся в this.options в экземпляре, поэтому доступ к this.options.placeId в функции urlRoot будет возможен.

+0

Woah, это было легко. Спасибо :) – mbajur

+0

Добро пожаловать :) – Exinferis