2016-08-21 4 views
1
senden

Ich arbeite auf Schienen mvc und ich benutze angularjs (ziemlich neu dazu) für verschiedene Javascript-Funktionen. Ich habe ein Array von einigen IDs, die ich über die $ http post-Methode an die create-Methode meines entsprechenden Rails-Controllers senden möchte.

Mein Service ist:

.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; 
}); 
}; 

Die entsprechende Winkelreglerfunktion ist:

$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); 
}; 

wenn ich den Knopf in Ansichten, die die Controller saveTeam Funktionen aufrufen klicken sagt es Fehler 422 nicht verarbeitbar Eintrag in der Konsole. Was mache ich falsch?

+0

Sie sind auf völlig falschen Weg. Lesen Sie die Dokumentation für '$ http',' $ q' und versprechen Sie dann, Ihre Arbeit fortzusetzen. –

Antwort

0

Basierend auf der Fehlermeldung, glaube ich, dass Ihre Post-Anfrage es zu Ihrem Rails-Controller macht, aber das ist, wo der Fehler auftritt.

Ein Tweak auf der Angular-Seite, das bei der Fehlersuche helfen kann, und oft eine gute Übung ist, eine Funktion zu haben, um den Fehlerfall für Ihren http-Anruf zu behandeln. So

statt

$http.post('/user_teams',player_ids) 
    .success(function(data,status){ 
    data = player_ids; 
    status = true; 
}); 

Vielleicht versuchen so etwas wie:

$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); 
}); 

Die erste Funktion des .then() ist die Funktion ein erfolgreiches Ergebnis von Ihrem http Anruf zu handhaben, die zweite Die Funktion wird nur aufgerufen, wenn beim HTTP-Aufruf ein Fehler aufgetreten ist.

Weitere Informationen über Angular von $ http: https://docs.angularjs.org/api/ng/service/ $ http #

hoffe, das hilft, Cliff

Verwandte Themen