Я пытаюсь передать данные из API ответов Typeform.Все работает, кроме пользовательских ответов.Только один ответ работает с type: website
, например, другой type: multiple_choice
не работает.
Пример ответа от Typeform выглядит следующим образом:
"items": [
{
"landing_id": XXXXXXX
},
"answers": [
{
"field": {
"id": "hVONkQcnSNRj",
"type": "website",
"ref": "my_custom_website_reference"
},
"type": "url",
"text": "https://xxxxx.com"
},
{
"field": {
"id": "k6TP9oLGgHjl",
"type": "multiple_choice",
"ref": "my_custom_multiple_choice2_reference"
},
"type": "choice",
"choice": {
"label": "Tokyo"
}
}
]
My OrdersController.rb
response = HTTParty.get("https://api.typeform.com/forms/XXXXXX/responses?page_size=25&query=#{current_user.hash_id}",
headers: {"Authorization" => "Bearer #{@token}"})
if response.code.to_i == 200
items = response.parsed_response["items"]
items.each do |item|
@order = current_user.orders.find_or_create_by(landing_id: item["landing_id"]) do |order|
item["answers"].each do |answer|
order.landing_id = item["landing_id"]
order.email = item["hidden"]["email"]
order.price = item["hidden"]["price"]
order.moduls = item["hidden"]["moduls"]
order.project = item["hidden"]["project"]
# This is working
order.website = answer["url"]
# This isn't working
order.payment = answer["choice"]
end
end
end
Когда я изменяю answer["choice"]
на answer
, я получаю только первый field
из ànswers
, который равен https://xxxxx.com
.Если я изменю answer["choice"]
на item["answers]
, я получу каждый field
от answers
.
Если я использую item["answers]["field"]["choice"]
или что-то подобное, я получаю эту ошибку no implicit conversion of string into integer
.
В документации Typeform я нашел следующее:
ПОЛЕ С ОТВЕТОМЗНАЧЕНИЕ (ОТНОСИТСЯ К ОБЪЕКТУ ОТВЕТА ПУНКТА)
answers[n].choice.label
Возможно, мне нужно настроить свой код?Для меня действительно неясно, что это значит.