// Set up the $resource
$scope.Users = $resource("http://localhost/users/:id");
// Retrieve the user who has id=1
$scope.user = $scope.Users.get({ id : 1 }); // returns existing user
// Results
{"created_at":"2013-03-03T06:32:30Z","id":1,"name":"testing","updated_at":"2013-03-03T06:32:30Z"}
// Change this user's name
$scope.user.name = "New name";
// Attempt to save the change
$scope.user.$save();
// Results calls POST /users and not PUT /users/1
{"created_at":"2013-03-03T23:25:03Z","id":2,"name":"New name","updated_at":"2013-03-03T23:25:03Z"}
Я ожидаю, что это приведет к PUT to/users/1 с измененным атрибутом. Но это вместо POST для/users и создает нового пользователя (с новым идентификатором вместе с новым именем).
Есть ли что-то, что я делаю неправильно?
AngularJS v1.0.5
Спасибо, 90% там, это POSTs/users/1 теперь с обновленным пользователем. Но как сделать это PUT вместо POST? Очень близко. –
Я думаю, это POST по дизайну. Мне придется переопределить «сохранить» на POST, когда это новый ресурс, и PUT, когда это обновление существующего ресурса. http://docs.angularjs.org/api/ngResource.$resource –
ответить на мой вопрос о PUT вместо POST, $ resource ("/ users /: id", {'id': '@id'}, {обновление: {метод: 'PUT'}}); делает трюк для PUT. Просто позвоните пользователю User.update (пользователь) или пользователю. $ Update так, как вы бы пользователь User.save (пользователь) и пользователь. $ Save. –