2015-07-21 2 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

я получаю' Started POST "/ home/contact" для 127.0.0.1 в 2015-07-21 19:14: 45 +0530 Обработка HomeController # контакт как JSON ... NoMethodError (не определен метод контроллера =»для # ): приложение/контроллеры/home_controller.rb: 11: в 'новой' app/controller/home_controller.rb: 11: in 'contact'' –

+0

по существу, я хочу разобрать JSON в экземпляр класса ContactRequest –

Смежные вопросы