Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails AngularJs$http post向rails控制器发送数据的请求_Ruby On Rails_Angularjs_Http_Post - Fatal编程技术网

Ruby on rails AngularJs$http post向rails控制器发送数据的请求

Ruby on rails AngularJs$http post向rails控制器发送数据的请求,ruby-on-rails,angularjs,http,post,Ruby On Rails,Angularjs,Http,Post,我正在rails mvc上工作,并且我正在使用angularjs(对它来说很新)来实现各种javascript函数。我有一些ID的数组,我想通过$HTTPPOST方法将它们发送到相应rails控制器的create方法 我的服务是: .service('teamService' , function ($http) { var TeamService = {}; TeamService.saveTeam = function(player_ids) { $http.post('/use

我正在rails mvc上工作,并且我正在使用angularjs(对它来说很新)来实现各种javascript函数。我有一些ID的数组,我想通过$HTTPPOST方法将它们发送到相应rails控制器的create方法

我的服务是:

.service('teamService' , function ($http) {
  var TeamService = {};
  TeamService.saveTeam = function(player_ids) {
  $http.post('/user_teams',player_ids)
  .success(function(data,status){
    data = player_ids;
    status =  true;
});
};
    $scope.saveTeam = function () {
  var mf = $scope.getIDs($scope.Midfielders.data);
  var df = $scope.getIDs($scope.Defenders.data);
  var fw = $scope.getIDs($scope.Forward.data);
  var gk = $scope.getIDs($scope.GoalKeeper.data);
  var player_ids = mf.concat(df,fw,gk);
  teamService.saveTeam(player_ids);
};
相应的角度控制器功能为:

.service('teamService' , function ($http) {
  var TeamService = {};
  TeamService.saveTeam = function(player_ids) {
  $http.post('/user_teams',player_ids)
  .success(function(data,status){
    data = player_ids;
    status =  true;
});
};
    $scope.saveTeam = function () {
  var mf = $scope.getIDs($scope.Midfielders.data);
  var df = $scope.getIDs($scope.Defenders.data);
  var fw = $scope.getIDs($scope.Forward.data);
  var gk = $scope.getIDs($scope.GoalKeeper.data);
  var player_ids = mf.concat(df,fw,gk);
  teamService.saveTeam(player_ids);
};

当我在调用控制器saveTeam函数的视图中单击按钮时,控制台中会显示错误422无法处理条目。我做错了什么?

根据错误消息,我相信您的post请求会发送到Rails控制器,但这就是错误发生的地方

角度方面的一个调整可以帮助进行故障排除,而且通常是一个很好的实践,就是使用一个函数来处理http调用的错误情况

所以不是

$http.post('/user_teams',player_ids)
  .success(function(data,status){
    data = player_ids;
    status =  true;
});
也许可以尝试以下方式:

$http.post('/user_teams',player_ids)
  .then(function(data,status){
    data = player_ids;
    status =  true;
},function(error){
     //handle what happens if there is an error with the http post call
     console.log("Error occurred: " + error);
});
.then()的第一个函数是处理http调用的成功结果的函数,第二个函数只有在http调用发生错误时才会被调用

Angular的$http:$http的其他信息#

希望这有帮助,
克里夫

你完全走错了路。阅读
$http
$q
的文档,然后继续你的工作。