2015-07-21 24 views
0

我認爲這很奇怪的問題,建立我的第一個軌道4演示應用程序,我有POST請求通過角工作,但是解析它的控制器上引發錯誤JSON解析拋出了零誤差,同時有效載荷,沒有空值

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請求的有效載荷有關的任何零或空白字段

{ 
"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" 
} 
+0

顯示什麼是行#9? –

+0

不允許我以任何方式顯示內線數字,但錯誤是在這一行'@contactReq = HomeHelper :: ContactRequest.new(JSON.parse(params [:json]))'我改變了'@contactReq = HomeHelper :: ContactRequest.new(params)'基於@maxd的建議,但是,沒有效果 –

回答

1

你不有:json參數params哈希:

@contactReq = HomeHelper::ContactRequest.new(JSON.parse(params[:json])) 

看看你的日誌以上(近參數:)

我想你想傳遞給params構造器是這樣的:

@contactReq = HomeHelper::ContactRequest.new(params) 
+0

然後我在2015-07-21 19:14獲得127.0.0.1的'Started POST「/ home/contact」 45 +0530 通過HomeController#contact作爲JSON處理 ... NoMethodError(undefined method controller ='for#): app/controllers/home_controller.rb:11:in'new' app/controllers/home_controller.rb:11:'contact'' –

+0

本質上,我想將JSON解析爲ContactRequest類的一個實例 –