Я использую почтальона, чтобы сделать пост запрос на мои рельсы/виноградный APIрубин JSON с Почтальон
Вот объект JSON
{
"customer":{
"first_name":"Joe",
"last_name":"Doe",
"email":"[email protected]",
"phone":"999-999-9999",
"addresses_attributes":[{
"address":{
"address1":"123 somewhere st",
"customer_id":"",
"address2":"",
"city":"Moldor",
"state":"CA",
"zip":"99999",
"region_id":"1"
}
}]
}
}
Если отправить это к API/v1 /customers.json я получаю следующее сообщение об ошибке
"error": "first_name is missing, last_name is missing, email is missing, phone is missing",
Если изменить формат JSON для:
{
"first_name":"Joe",
"last_name":"Doe",
"email":"[email protected]",
"phone":"999-999-9999",
"addresses_attributes":[{
"address":{
"address1":"123 somewhere st",
"customer_id":"",
"address2":"",
"city":"Moldor",
"state":"CA",
"zip":"99999",
"region_id":"1"
}
}]
}
Я действительно создает клиент, но он не создает по адресу
В моих моделей у меня есть
#customer.br
has_many :addresses
accepts_nested_attributes_for :addresses, allow_destroy: true
#address.rb
belongs_to :customer
Вот апи/VI/curtomer.rb
desc "Create a Customer"
params do
requires :first_name, type: String, desc: "First Name"
requires :last_name, type: String, desc: "Last Name"
requires :email, type: String, desc: "Email"
requires :phone, type: String, desc: "Phone"
optional :notes, type: String, desc: "Notes"
end
post do
# Tried with new instead of create
# test = Customer.new({
# first_name: params[:first_name],
# last_name: params[:last_name],
# email: params[:email],
# phone: params[:phone],
# notes: params[:notes],
# addresses_attributes: params[:addresses]
# })
Customer.create({
first_name: params[:first_name],
last_name: params[:last_name],
email: params[:email],
phone: params[:phone],
notes: params[:notes]
# addresses_attributes: params[:addresses]
})
end
Адрес выглядит примерно так же, как и клиенты Я не использую контроллеры на виноград Документация
EDIT: добавить customer.rb создать код
Я не использую контроллеры для документации Grape. Я добавил код создания в исходное сообщение. Спасибо за формат JSON – Marrento
Поменяли мой ответ и думаю, что вы можете использовать 'Customer.create (params [: customer])' для создания нового клиента с ассоциацией. – dddd1919