Rails не кодирует вложенные данные из POST - PullRequest
0 голосов
/ 06 октября 2010

В настоящее время я работаю над приложением rails3, которое использует jQuery. У меня есть плагин javascript, который возвращает массив данных JSON на основе выбранных пользователем настроек. У меня есть кнопка сохранения, которая читает этот массив данных из плагина java-скрипта и отправляет его обратно в приложение rails для сохранения. Кажется, что работает javascript, он делает правильный вызов ajax и отправляет данные обратно в приложение rails. Кажется, проблема в том, как rails кодирует данные, которые были возвращены обратно на сервер.

Проблема заключается во вложенных данных, которые я пытаюсь отправить обратно в приложение rails. У меня есть массив сдвигов, которые, кажется, обрабатываются как одна длинная строка, а не хэш значений, которые я ожидаю. Вот вывод данных рельсов получает.

Параметры: {"shifts" => "[{\" start_time \ ": \" ср окт 06 2010 09:30:00 GMT + 0100 (BST) \ ", \" end_time \ ": \" ср 06 октября 2010 13:00:00 GMT + 0100 (BST) \ "\ "активный \": правда, \ "вхождение \": \ "еженедельно \", \ "company_id \": \ "1 \"}, {\ "start_time \": \" ЧГ 07 октября 2010 09:30:00 по Гринвичу + 0100 (BST) \ ", \" end_time \ ": \" Чт 07 октября 2010 13:00:00 GMT + 0100 (BST) \ "\ "активный \": правда, \ "вхождение \": \ "еженедельно \", \ "company_id \": \ "1 \"}]", "ID" => "1"}

Я ожидал бы, что смогу использовать следующий код в моем контроллере

params[:shifts].each do |shift|
  puts shift.inspect # would expect a hash of values here
end

Однако вместо хеша значений есть только одна строка. Любые предложения относительно того, почему rails не кодирует значения хешей, как вы ожидаете.

1 Ответ

0 голосов
/ 06 октября 2010

Полагаю, вам нужно сначала проанализировать его как JSON."require 'json'" вверху вашего контроллера, затем попробуйте JSON.parse (params [: shift]). each {| shift |shift.inspect}.

...