我有一个非常基本的工厂:
app.factory('Person', function($resource) {
return $resource(API_ROUTE+'/people/:id.json', {
id: "@id"
}, {
update: {
method: "PUT"
}
});
});
它按预期执行带有指定网址的get
请求,但当我尝试进行更新时,会转到/people.json
而不是/people/:id.json
。
Person.get({
id: personId
}, function(person) {
return $scope.person = person;
});
$scope.person.$update()
我从服务器日志获得的响应:
Started PUT "/hr/angular/people.json" for 128.104.86.165 at 2015-04-14 14:12:30 -0500
ActionController::RoutingError (No route matches [PUT] "/angular/people.json"):
我尝试了一种不同的方式来执行更新命令但得到了相同的响应。
Person.update($scope.person, function(person) {
console.log($person);
});
如果我将id硬编码到资源路径中,例如$resource(API_ROUTE+'/people/1234.json')
,我就可以对该个人执行所有预期的操作,包括更新。我没有看到我错过了什么会允许资源的get
方法使用正确的路径而不是更新。
答案 0 :(得分:1)
您需要将您的ID传递给更新方法吗?
$scope.person.$update({ id: 1 }, function(response) {
//
});