In backbone.js aktualisiere ich ein Kategoriemodell:
%Vor%Dies spart Ordnung und aktualisiert die Sammlung im Backbone korrekt. Aber auf der Schiene serverseitig spart es nicht wegen eines Routing-Fehlers:
%Vor%Das Problem ist, dass rails erwartet, dass PUT / update eine URL mit der ID "/ categories /: id" und nicht nur "/ categories"
enthältIch habe das getestet, indem ich die Modell-URL geändert habe:
%Vor%bis
%Vor%Das funktioniert gut.
%Vor%Muss ich Backbone hacken, um die ID zur URL hinzuzufügen, oder fehlt mir etwas?
Backbone bestimmt die zu verwendende URL aus dem Ergebnis von Model.url (). Also wenn du
hast %Vor%Die Speichermethode des Url-Backbones wird auf dem Server versuchen: host + '/ categories'
Wenn Sie keine URL-Funktion definieren, delegiert das Standardverhalten für die URL-Funktion an die Sammlung, in der sie sich befindet. Wenn Sie also eine Sammlung haben
%Vor%und die Instanz einer Kategorie, die zu einer Categories-Sammlung gehört, erhalten automatisch den URL-Host + '/ categories' + '/' + category.id zum Speichern auf dem Server.
Wenn Ihr Modell jetzt nicht Teil einer Sammlung ist, können Sie dies nicht tun. Sie müssen die URL-Funktion in Ihrem Modell so etwas wie
überschreiben %Vor%Beachten Sie, dass dies kein Hacking ist. Dies verwendet das Backbone korrekt. In zukünftigen Editionen von Backbone glaube ich, dass es kein Standardverhalten der URL-Funktion geben wird, und die URL-Funktion muss für alle Modelle geschrieben werden.
Wenn Sie ein Modell außerhalb einer Sammlung verwenden, geben Sie eine URL-Wurzel an:
%Vor%Wenn Ihre Kategorie auf der Serverseite vorhanden ist, dann sollte Ihr Kategorieobjekt eine ID haben und alles funktioniert. Aus dem Code, den Sie gesendet haben, wurde die ID nicht festgelegt:
%Vor%fügen Sie die ID hinzu, wenn Sie die Kategorie instanziieren, und es sollte in Ordnung sein, andernfalls wird der Backbone versuchen, die Kategorie im Backend mit einem POST zu erstellen. Wenn Sie die ID angeben, wird ein PUT ausgeführt. Das ist, wenn Sie eine Sammlung für Ihr Objekt einrichten.
Tags und Links ruby-on-rails backbone.js