Виноградный API игнорирует параметры PUT/POST

Я строю виноградный API для приложения рельсов. Я тестирую его с помощью спецификации запроса rspec. Я столкнулся с проблемой при создании маршрута сообщения следующим образом:

resources :events do
  segment '/:event_id' do
    resources :tickets do
       post do
         event = current_user.events.find params[:event_id]
         ...#do sth with event using params[:tickets_ids]

соответствующая спецификация:

it "should should return the JSON hash of validated tickets" do
  post "/api/mobile/#{version}/events/#{event.id}/tickets/", { tickets_ids: [1,2] }, credentials
  response.should be_success
  JSON.parse(response.body).should be_kind_of Hash
end

Виноградный "контроллер" не может видеть никаких параметров, которые не отправляются как часть URL. При печати параметров [:tickets_ids] это ноль. У меня нет этой проблемы при использовании запросов на получение. Я могу воспроизвести проблему при отправке запроса вручную с помощью curl. Маршрутизация вложенных ресурсов также не является проблемой, поскольку она ведет себя так же, как и маршрут верхнего уровня.

Я обнаружил следующую проблему на GitHub, но применение данного патча обезьяны не работает и ломает сервер при запуске. https://github.com/intridea/grape/issues/417

Я использую следующую версию гемов и не могу обновить их из-за конфликтов зависимостей:

grape (0.2.1.1)
rails(3.0.7)
rspec-rails (2.6.1)

Любая помощь и советы будут с благодарностью.

1 ответ

Решение

Насколько я помню, должен быть набор заголовков Content-Type со значением application/x-www-form-urlencoded

Другие вопросы по тегам