Я получаю 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
конец