我使用AngularJS Rails Resource并将其配置为:
angular.module('admin')
.factory('Page', ['railsResourceFactory', 'API_PROVIDER', function(railsResourceFactory, API_PROVIDER) {
return railsResourceFactory({
url: API_PROVIDER.full_path + 'pages', //which resolves to https://example/api/pages
name: 'page'
});
}]);
在我的控制器中:
(function() {
'use strict';
angular
.module('admin')
.controller('PagesEditController', PagesEditController);
/** @ngInject */
function PagesEditController($timeout, webDevTec, toastr, $scope, $moment, Page, Session, $http, $location, $anchorScroll, $stateParams) {
$http.defaults.headers.common.Authorization = 'Token token='+ Session.token;
var page = Page.get($stateParams.pageId).then(function (result) {
$scope.editPage = result;
});
$scope.savePage = function (page) {
page.update();
}
}
})();
在我看来,我有:
...
<input type="text" ng-model='editPage.title' class="form-control underline-input">
<button ng-click='savePage(editPage)' class="btn btn-green btn-ef btn-ef-7 btn-ef-7h" activate-button="success"><i class="fa fa-envelope"></i> Save page</button>
...
编辑:我的保存功能:
$scope.savePage = function (page) {
Page.get($stateParams.pageId).then(function (result) {
result.title = $scope.editPage.title;
result.content = $scope.editPage.content;
result.update();
})
}
但它不起作用。我得到一个错误:No route matches [PUT] "/api/pages"
这意味着PUT
请求在提交请求时没有传递对象ID。
我使用Mongoid btw。
我在这里缺少什么?