0

这是相关的代码片段:

$scope.submit = function() {
  console.log(this);
  weekly_habits = $resource('/api/users/:user_id/weekly_habits/:id/', {user_id: '@user'});
  entry = weekly_habits.save({name: $scope.newAccomp, count: 0});
  $scope.accomplishments.unshift(entry);
  $scope.newAccomp = '';
}

我的错误是没有路线匹配 /api/users/weekly_habits... 我的项目是在 rails 中构建的,我不明白这条线是什么意思 {user_id: '@user'}。这个@user 对象应该在哪里?如果有人解释这里发生了什么,将不胜感激。

谢谢!

4

2 回答 2

0

从文档中:

如果参数值以 @ 为前缀,则从数据对象中提取该参数的值(对于非 GET 操作很有用)。

后来他们有一个例子

var User = $resource('/user/:userId', {userId:'@id'});

所以资源服务的第二个参数是默认参数。在这种情况下,默认情况下,userId 将从您调用方法的资源对象中提取。

以前我有一个 GET 操作的示例,在这种情况下这并没有什么意义。但是假设您正在使用数据对象执行 POST ($save) 请求。Angular 会自动从数据对象中提取 userId 并将其注入到 URL 中。您不必手动指定 URL 的值。

更多信息可以在文档页面上找到。

http://docs.angularjs.org/api/ngResource .$resource

于 2013-10-16T21:17:45.123 回答
0

引用文档:“如果参数值以 @ 为前缀,则该参数的值将从数据对象中提取(对非 GET 操作有用)。”

'@user' 告诉 Angular 从对象的 'user' 属性中提取 user_id 的值。因此,如果您调用.save()具有 'abc123' 的 'user' 属性的对象,则 URL 中的 :user_id 将被替换为 'abc123'。

于 2013-10-16T21:19:00.910 回答