3

我有一个 AngularJS 应用程序,它使用 Restangular 在 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();
    }
  }
})

我的控制器功能:

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

正在向http://mysite.com/courses提出 PUT 请求,而不是http://mysite.com/courses/id

就像我预期的那样,我似乎无法弄清楚为什么。

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

任何帮助将不胜感激。

4

1 回答 1

5

我设法通过在我的设置上多摸索来弄清楚。我从我找到的教程中复制了一些 Restangular 的配置,而没有真正检查是否所有的部分都是必要的。

在我的config()

RestangularProvider.setRestangularFields({
  id: '_id.$oid'
});

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

希望这能帮助那些与我一样失明的人。

于 2013-10-30T18:44:08.457 回答