AngularJS资源在更新时不使用ID

时间:2015-04-14 19:26:40

标签: javascript json angularjs

我有一个非常基本的工厂:

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方法使用正确的路径而不是更新。

1 个答案:

答案 0 :(得分:1)

您需要将您的ID传递给更新方法吗?

$scope.person.$update({ id: 1 }, function(response) {
    //
});