내 첫 번째 rails 4 데모 앱을 빌드하는 다소 이상한 문제가 보입니다. POST 요청이 각도를 통해 작동하지만 컨트롤러에서 구문 분석하면 오류가 발생합니다.
Started POST "/home/contact" for 127.0.0.1 at 2015-07-21 18:40:21 +0530
Processing by HomeController#contact as JSON
Parameters: {"name"=>"Gabbar Singh", "email"=>"[email protected]", "phone"=>"9820420420", "message"=>"kitne aadmi thein", "captcha"=>"03AHJ_VuvKsc5W9IrGKKnitvFp8niuxL2cnpIpJ2WgGXPkQFYVXBe4KKwfcLtVhrx3Juos-R36WcYGScXbJgA9ZLjoznN7ABvjnHlNQ5r5z25-jCs7BKJBf14ITvCqVqYRoU4Je2c7EJXa7K3IjPmNXeWvUosYbLsoGAtnlH17ScIM-MLrm9iDBAJqTO0xiOY4yYI7rYSgfcXcZg7DGLioni8XEelTqgjrlEoK21ORwstV8i90zRfqTmQExs8TjcYFZKzTD4oHqBbsXQCA4GMvrMRiWK5OmzXvauopthhijUDCDJqtg-cWGGuMCOb6dPNkqXW7oEMVCBo-U_e0Nw1dpXh0Goui8pgqvseadEG120d3kVZcke8WcmnIKdi2_VkUxhppOYnXjnAh"}
Completed 500 Internal Server Error in 2ms
TypeError (no implicit conversion of nil into String):
app/controllers/home_controller.rb:9:in `contact'
ContactRequest
다음 목적은
class ContactRequest
include ActiveModel::Model
attr_accessor :name, :email, :phone, :message, :captcha
validates :name, presence: true,length: {in:2..255}
validates :email, presence: true, length: {in:6..255}
validates :message, presence: true
validates :phone, presence: true
validates :captcha, presence: true
end
그리고이 데이터를 게시하는 각도 스 니펫은
var post_data = { //prepare payload for request
'name':$scope.contact.name,
'email':$scope.contact.email,
'phone':$scope.contact.phone,
'message':$scope.contact.message,
'captcha':$scope.response //send g-captcha-reponse to our server
}
$http.post(
'home/contact',post_data
).success(function(response){
console.log(response);
//flush form data
$scope.contact = {};
if(response.error === 0){
$scope.messages = "Thanks!" + $scope.contact.name + "for your request! We will get back to you shortly"
}else{
$scope.messages = "We are sorry but your request was not processed, please try again."
}
})
오류가 발생하는 컨트롤러
class HomeController < ApplicationController
wrap_parameters false
def index
end
def contact
@contactReq = HomeHelper::ContactRequest.new(JSON.parse(params[:json]))
logger.debug "ContactRequest: #{@contactReq.attributes.inspect}"
end
end
로그 나 방화범의 POST 요청 페이로드 양식에 해당 문제에 대한 nil 또는 공백 필드가 없습니다.
{
"name":"Gabbar Singh",
"email":"[email protected]",
"phone":"9820420420",
"message":"kitne aadmi thein",
"captcha":"03AHJ_VuvKsc5W9IrGKKnitvFp8niuxL2cnpIpJ2WgGXPkQFYVXBe4KKwfcLtVhrx3Juos-R36WcYGScXbJgA9ZL
joznN7ABvjnHlNQ5r5z25-jCs7BKJBf14ITvCqVqYRoU4Je2c7EJXa7K3IjPmNXeWvUosYbLsoGAtnlH17ScIM-MLrm9iDBAJqTO
0xiOY4yYI7rYSgfcXcZg7DGLioni8XEelTqgjrlEoK21ORwstV8i90zRfqTmQExs8TjcYFZKzTD4oHqBbsXQCA4GMvrMRiWK5Omz
XvauopthhijUDCDJqtg-cWGGuMCOb6dPNkqXW7oEMVCBo-U_e0Nw1dpXh0Goui8pgqvseadEG120d3kVZcke8WcmnIKdi2_VkUxhppOYnXjnAh"
}
해시에 :json
매개 변수 가 없습니다 params
.
@contactReq = HomeHelper::ContactRequest.new(JSON.parse(params[:json]))
위의 로그를보십시오 (Parameter : 근처).
다음 params
과 같이 생성자 에 전달하고 싶다고 생각합니다 .
@contactReq = HomeHelper::ContactRequest.new(params)
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다