Restangular PUT不在请求中附加id

Dav*_*tik 3 ruby-on-rails angularjs restangular

我有一个使用Restangular的AngularJS App在Rails 4 API之上进行持久化.我遇到的问题是我的更新无法正常工作.

我的代码在routeProvider:

when('/course/edit/:courseId', {
  controller: 'CourseEdit',
  templateUrl: '/assets/templates/course/form.html',
  resolve: {
    course: function(Restangular, $route) {
      return Restangular.one('courses', $route.current.params.courseId).get();
    }
  }
})
Run Code Online (Sandbox Code Playgroud)

我的控制器功能:

function CourseEdit($scope, $location, course) {
  $scope.course = course;
  $scope.save = function() {
    $scope.course.put().then(function() {
      $location.path('/course/view/' + $scope.course.id);
    });
  };
}
Run Code Online (Sandbox Code Playgroud)

PUT的请求正在http://mysite.com/courses而不是http://mysite.com/courses/id

就像我预期的那样,我似乎无法弄明白为什么.

rails抛出的错误是'No route matches [PUT] "/courses".

任何帮助将不胜感激.

Dav*_*tik 5

我设法了解了一下,我设法解决了这个问题.我从我发现的教程中复制了Restangular的一些配置,而没有真正检查所有部分是否都是必要的.

在我的 config()

RestangularProvider.setRestangularFields({
  id: '_id.$oid'
});
Run Code Online (Sandbox Code Playgroud)

这与我的API在我的API中不匹配,并且是我遇到的问题的罪魁祸首.我最终删除了它,只留下配置setBaseUrl,它又开始工作了.

希望这能帮助其他人摆脱与我同样失明的困境.