0
我有一个很简单的角形式,看起来像这样:角POST请求未格式化正确
<form ng-submit="createNewQuestion()" name="createNewQuestionForm">
<div class="form-group">
<textarea class="form-control" rows="3" ng-model="question.question" placeholder="Add a question here."></textarea>
</div>
<div class="form-group">
<textarea class="form-control" rows="3" ng-model="question.answer" placeholder="Add the answer here."></textarea>
</div>
<button type="submit" class="btn btn-default">Next</button>
</form>
它提交到控制器中的CreateNewQuestion()函数,它看起来像这样:
$scope.createNewQuestion = function() {
$scope.question.droplet_id = $scope.createdDroplet.id; //add droplet_id to form data
question.create($scope.question).success(function(question) {
$scope.questions.push(question); //return the question and put it in the helps variable
$scope.question = {}; // clear form
});
};
这就要求厂家进行POST请求,看起来像这样:
app.factory('question', ['$http', function($http) {
return {
create: function (question) {
return $http.post('/questions/', question)
}
}
}]);
请求得到提交时提交,但参数格式不正确。日志看起来像这样:
Processing by QuestionsController#create as HTML
Parameters: {"question"=>"some_question", "answer"=>"some_answer", "droplet_id"=>785}
Completed 500 Internal Server Error in 3ms
NoMethodError (undefined method `permit' for "vhjkhfjhgfjhg":String):
这是奇怪的事情。我有复制并粘贴形式和功能对数据进行发送的正确格式为我的导轨的后端,这将是相同的代码:
Parameters: {"question"=>"question", "answer"=>"answer", "drop_id"=>485, "question"=>{"question"=>"question", "answer"=>"answer", "drop_id"=>485}}
的领域不同,但代码是字面上相同。为什么一个人在工作而另一个人不在,我该如何解决?
更新
这似乎是在后端的命名问题,因此请求是好的。如果我删除要求(:问题):
params.require(:question).permit(:question, :answer, :droplet_id, :ordering)
它的工作原理。它似乎不喜欢模型名称与其中一个属性相同。