Синтаксический анализ данных JSON в RAILS 3.0.6, полученных из HTTP POST, с применением типа контента / x-www-form-urlencoded - PullRequest
0 голосов
/ 29 февраля 2012

Я получаю 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": "работа / тест /", "работа": { «статус»: «УСПЕХ», "url": "job / 356 /" } }

Вот параметры, возвращаемые контроллером RAILS с помощью Rails.Logger:

{"{\" name \ ": \" JSON Parser \ ", \" url \ ": \" job / test / \ ", \" job \ ": {\" status \ ": \" УСПЕХ \ ", \" url \ ": \" job / 356 / \ "}}" => nil, "action" => "receive_jobs_updates", "controller" => "jobs"}

Ошибка трассировки:

NoMethodError (У вас есть нулевой объект, когда вы этого не ожидали! Возможно, вы ожидали экземпляр ActiveRecord :: Base. Ошибка произошла при оценке nil. []): app / controllers / jobs_controller.rb: 32: in `receive_jobs_updates '

Код контроллера: def receive_job_updates

Rails.logger.info params

job_name = params ['name'] job_status = params ['job'] ['status']

render: text => "Все в порядке",: status =>: ok

конец

1 Ответ

0 голосов
/ 29 февраля 2012

Вам необходимо создать Job объект: job_status = Job.new(params[:job]).status

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...