【发布时间】:2015-11-24 17:50:06
【问题描述】:
我已经开始学习 Angular,但我被困在一些应该是微不足道的事情上。我来自 Rails 背景,创建了一个非常简单的 Rails Web 服务来管理 MailingList。目前我的网络服务中存在 2x API 端点:
/api/v1/mailing_lists [GET]
/api/v1/mailing_lists [POST]
POST 端点需要一个有效的电子邮件作为 API 调用中的 PARAM。这就是我卡住的地方。如何在 Angular 中将此参数传递给我的 API?我尝试过使用网络上的解决方案,但我只是做得不对。到目前为止,这是我所拥有的:
在我的 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 错误响应。查看我的 Web 服务日志后,我可以看到收到了一个 POST 请求,但没有传递任何参数,因此它被拒绝了。
任何帮助将不胜感激!
附言。我已确保在我的 Rails 应用上启用 CORS。
【问题讨论】:
标签: javascript ruby-on-rails angularjs ngresource