Кривая командной строки POST
Я пытаюсь смоделировать POST для моего простого веб-сервиса Rails. Файлы, созданные эшафотом, не были изменены. Когда я получаю данные POST из формы веб-сайта, запись создается правильно.
Когда я пытаюсь выполнить POST с curl, в базе данных создается запись, но она имеет значения NULL в полях, за исключением "updated_at" и "created_at". Я новичок в завивке командной строки, поэтому я не могу делать это правильно.
curl -d "name=Gazoo&friend=Rubble" localhost:3000/flintstones
Я верну это от WEBrick:
Запущен POST "/flintstones" для 127.0.0.1 в Thu Apr 28 18:04:47 -0600 2011 Обработка FlintstonesController # create as Параметры: { "name" = > "Gazoo", "friend" = > "Rubble" } AREL (0.3ms) INSERT INTO "flintstones" ( "name", "friend", "created_at", "updated_at" ) VALUES (NULL, NULL, '2011-04-29 00: 04: 47.779902', '2011 -04-29 00: 04: 47.779902 ') Перенаправлено на http://localhost:3000/flintstones/4
После GET для json
curl localhost: 3000/flintstones.json
Получаю:
[{ "кремень: {" Имя ": нулевой, "created_at":" 2011-04-29T00: 09: 58Z", "updated_at": "2011-04-29T00: 09: 58Z "," идентификатор ": 4," друг": нулевая}}]
Почему я получаю null в своих полях?
Спасибо заранее.
Ответы
Ответ 1
Я немного искал Google, и каждый пример использования curl с веб-службой rails показывает параметры, переданные в формате
object[paramName]=paramValue
а также один -d
для каждого параметра, который сделает ваш оператор CURL похожим на
curl -d "flintstone[name]=Gazoo" -d "flintstone[friend]=Rubble" localhost:3000/flintstones
Вот источники, на которые я ссылаюсь:
Ответ 2
Rails (по умолчанию) не ищет тело сообщения, как указано, "name=Gazoo&friend=Rubble
". Он ищет эту схему - если ваша модель - Flintstones, а ваши поля - имя и друг - "Flintstone[name]=Gazoo&Flintstone[friend]=Rubble
". Это рельсовая DSL для почтового тела из сообщения формы.