Restangular PUT не добавляет идентификатор в запрос

У меня есть приложение AngularJS, использующее Restangular для сохранения поверх API Rails 4. Я столкнулся с проблемой, что мои обновления не работают.

Мой код в 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();
    }
  }
})

Моя функция controller:

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".

Любая помощь будет принята с благодарностью.


person David Kartik    schedule 30.10.2013    source источник


Ответы (1)


Мне удалось выяснить это, немного поковырявшись в моей настройке. Я скопировал некоторую конфигурацию для Restangular из учебника, который я нашел, не изучив, нужны ли все части.

In my config()

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

Это не соответствует моим полям в моем API и было причиной проблем, которые у меня были. В конце концов я удалил это, оставив только конфигурацию для setBaseUrl, и она снова заработала.

Надеюсь, это поможет кому-то еще, кто борется с той же слепотой, что и я.

person David Kartik    schedule 30.10.2013