我收到来自第三方的HTTP POST,内容类型为' application / x-www-form-urlencoded'在我的RAILS 3.0.6控制器
中我尝试将请求解析为 -
job_status = params [' job'] [' status']
以及
recd_json = JSON.parse(params) job_status = recd_json [' job'] [' status']
但是在这两种情况下,rails控制器都会抛出错误' NoMethodError(当你没想到它时,你有一个零对象! 您可能期望ActiveRecord :: Base的实例。'
我不确定如何解析JSON(使用此内容类型进行编码)。感谢任何帮助:)
继发布的json: { " name":" JSON Parser", " url":" job / test /", "工作":{ " status":" SUCCESS", " url":" job / 356 /" } }
继承RAILS控制器使用Rails.Logger返回的参数:
{" {\" name \":\" JSON Parser \",\" url \":\&#34 ; job / test / \",\" job \":{\" status \":\" SUCCESS \",\& #34; url \":\" job / 356 / \" }" => nil," action" =>" receive_jobs_updates"," controller" =>" jobs" }
错误跟踪:
NoMethodError(当你没想到它时,你有一个零对象! 您可能期望ActiveRecord :: Base的实例。 在评估nil。[]时发生错误: app / controllers / jobs_controller.rb:32:在`receive_jobs_updates'
控制器代码: def receive_job_updates
Rails.logger.info params
job_name = params [' name'] job_status = params [' job'] [' status']
render:text => "一切顺利" ,:status => :好的
端
答案 0 :(得分:0)
您需要创建一个Job
对象:job_status = Job.new(params[:job]).status