У меня есть приложение Sinatra, и в большинстве моих контроллеров json приходит и автоматически выбирается в объекте params. Тем не менее, у меня есть пост-действие, которое вообще не получает параметров, если я не сыграю трюк с помощью метода before, чтобы вытащить параметры request.body, проанализировав их как JSON и объединив их в хэши params.
Вот контроллер вместе с методом фильтра:
before do
if request.request_method == "POST"
body_parameters = request.body.read
params.merge!(JSON.parse(body_parameters))
end
end
post '/locations/new' do
content_type :json
puts "params after post params method = #{params.inspect}"
... other code ...
end
Вывод, который я вижу, в основном состоит в том, что параметры в действии контроллера действительно находятся там правильно. Однако, если я прокомментирую предыдущий вызов, параметры будут пустыми.
Перед собой чувствует себя как взлома. Я ожидал бы, что эти параметры придут независимо от того, что... Я должен делать что-то не так, но я не знаю, что это.
Любая помощь будет глубоко оценена...