Restangular PUT不在请求中附加id

时间:2013-10-30 18:11:32

标签: 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();
    }
  }
})

我的控制器功能:

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

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

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

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

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:5)

我设法了解了一下我的设置。我从我找到的教程中复制了一些Restangular的配置,而没有真正检查所有部分是否都是必要的。

在我的config()

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

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

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