Backbone.js model.save renvoie TypeError?

J'essaie d'implémenter le modèle backbone.js qui ressemble à cela dans Django:

class Booking(models.Model): date = models.DateField('date booked') time = models.TimeField('time booked') duration = models.PositiveSmallIntegerField('duration booked') #x * 15 user = models.ForeignKey(User, related_name='bookings') room = models.ForeignKey(Room, related_name='bookings') description = models.TextField() 

Il est servi via une interface RESTful via TastyPie: / api / booking. Mon modèle de squelette est configuré comme ceci selon les instructions ici :

 window.Booking = Backbone.Model.extend({ url : function(){ return this.get('resource_uri') || this.collection.url; }, urlRoot : "/api/booking", defaults: { user : "/api/user/5" //defaults to nobodys } }); window.Bookings = Backbone.Collection.extend({ url : BOOKING_API, parse : function(data){ return data.objects; } }); 

Maintenant essayant de le tester dans une console comme celle-ci:

 var booking = new Booking({date : "2011-08-17", time: "12:45", duration: 30, room: "/api/room/1", description: "quickbook"}); booking.save(); 

Le code ci-dessus renvoie un TypeError. Je ne vois pas ce que je fais mal.

Vous ne définissez pas un resource_uri ou vous mettez votre réservation dans une collection. Le TypeError que vous voyez est à partir de this.collection.url. Vous verriez la même erreur en faisant réservation.collection.url. Quelque chose comme le suivant devrait faire l'affaire.

 var bookings = new Bookings; bookings.add(booking); booking.save(); 

Parce que lorsque vous appelez la méthode save() , il n'y a pas de resource_uri et non this.collection dans le modèle. Donc, votre url retourne undefined