Публикация входного значения в качестве параметра в API веб-сервиса в Angular

Я начал изучать Angular и застрял на чем-то, что должно быть тривиальным. Я из истории Rails и создал очень простой веб-сервис Rails, который управляет MailingList. В настоящее время в моем веб-сервисе существует 2x конечных точки API:

/api/v1/mailing_lists [GET]
/api/v1/mailing_lists [POST]

Конечной точке POST требуется действительный адрес электронной почты в качестве PARAM в вызове API. И вот где я застрял. Как передать этот параметр моему API в Angular? Я пытался использовать решения со всего Интернета, но я просто не понял это правильно. Вот что у меня пока есть:

В моих services.js:

angular.module('webFrontendApp.services', []).factory('MailingList', function($resource) {
    var data = $resource(
      'http://localhost:3000/api/v1/mailing_lists.json',
      {},
      {
        // 'get': { method:'GET', cache: false},
        'query': { method:'GET', cache: false, isArray:true },
        'save': {method: 'POST', cache: false }
      });
    return data;
});

В app.js

....
.when('/list/new', {
        templateUrl: 'views/list-new.html',
            controller: 'MailingListCtrl'
      })

....

Контроллер как mailinglist.js

angular.module ('webFrontendApp.controllers', [])

.controller('MailingListCtrl', function($scope, MailingList) {
    // Get all posts
    $scope.mailing_lists = MailingList.query();

    // Our form data for creating a new post with ng-model
    $scope.memberData = {};
    $scope.newMember = function() {
      var member = new MailingList($scope.memberData);
      member.$save();
    };
});

Форма выглядит так:

<form role="form" ng-submit="newMember()">
  <div class="row">
    <div class="input-group">
      <input type="text" ng-model="memberData.email" placeholder="New mailing list member" class="form-control">
      <span class="input-group-btn">
        <input type="submit" class="btn btn-primary" value="Add">
      </span>
    </div>
  </div>
</form>

Когда я отправляю форму, кажется, ничего не происходит, но я получаю сообщение об ошибке 405 от моего веб-сервиса. После просмотра журналов веб-службы я вижу, что был получен запрос POST, но параметры не были переданы, и поэтому он был отклонен.

Любая помощь будет оценена!

PS. Я убедился, чтобы включить CORS в моем приложении Rails.

1 ответ

Передать параметры внутри $save метод, передать post_data внутри MailingListтак что в основном это должно работать

$scope.newMember = function() {
    var member = new MailingList();
    member.$save({email: $scope.memberData.email});
};
Другие вопросы по тегам