Ошибка ОТПРАВКИ ПОСТА в рельсы и HTTPPARTY семантическая ошибка моего запроса - PullRequest
0 голосов
/ 19 марта 2019

это моя ошибка, когда я запустил свой метод {"errors" => {"users" => ["Отсутствуют данные для обязательного поля."]}, "Msg" => "Запрос был правильно сформирован, но был невозможно выполнить из-за семантических ошибок. "}

class BookingNotifier
include HTTParty
def initialize(booking_id)
  @booking = Booking.find booking_id
  @venue = @booking.event.service.venue
  @body = { "users" => [] }
  @headers = {
      "Accept" => "application/json",
      "Authorization" => "ENV_KEY",
      "Content-Type" => "application/json"
  }
end

def send_venue_notification
  venues_objects = []
    if @venue.notifications_enabled
      venues_objects << { "cellphone" => @booking.event.service.venue.phone,
                          "country_code" => "+57",
                          "user_session_keys" => [{ "key" => "Nombre",   "value" => @booking.profile.name },
                                                  { "key" => "Centro",   "value" => @booking.event.service.venue.name },
                                                  { "key" => "Cupos",    "value" =>  @booking.quantity },
                                                  { "key" => "Horarios", "value" => @booking.time.strftime("%I:%M %p el %d/%m/%Y") }] }.to_json
      @body["users"] = venues_objects
      make_request_venue
    end
end

def make_request_venue
  HTTParty.post("http://api.treble.ai/api/poll/49/deploy", headers: @header, body: @body)
end

1 Ответ

0 голосов
/ 20 марта 2019

Проблема вызвана to_json, вызванным не в том месте.

Все тело запроса должно быть отправлено в виде JSON.В вашем коде вы вызываете to_json для хэша, который позже помещается в массив @body["users"].

Пожалуйста, удалите to_json из send_venue_notification и вызовите его для @body при отправке запроса:

HTTParty.post("http://api.treble.ai/api/poll/49/deploy", headers: @headers, body: @body.to_json)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...