Как включить вновь созданный объект модели в ответ API Rails на пост-запрос? - PullRequest
0 голосов
/ 18 ноября 2018

У меня есть Rails API, который успешно обрабатывает данные, которые он получает через запрос Post. В контроллере для действия create у меня есть этот код для моего ответа:

render json: project, status: 201

Но мой ответ не включает project и выглядит так:

Response {type: "basic", url: "http://localhost:3000/api/save", redirected: false, status: 201, ok: true, …}body: (...)bodyUsed: falseheaders: Headers__proto__: Headersok: trueredirected: falsestatus: 201statusText: "Created"type: "basic"url: "http://localhost:3000/api/save"__proto__: ResponsearrayBuffer: ƒ arrayBuffer()blob: ƒ blob()body: (...)bodyUsed: (...)clone: ƒ clone()formData: ƒ formData()headers: (...)json: ƒ json()arguments: (...)caller: (...)length: 0name: "json"__proto__: ƒ ()[[Scopes]]: Scopes[0]ok: (...)redirected: (...)status: (...)statusText: (...)text: ƒ text()arguments: (...)caller: (...)length: 0name: "text"__proto__: ƒ ()[[Scopes]]: Scopes[0]type: (...)url: (...)constructor: ƒ Response()Symbol(Symbol.toStringTag): "Response"get body: ƒ ()get bodyUsed: ƒ ()get headers: ƒ ()get ok: ƒ ()get redirected: ƒ ()get status: ƒ ()get statusText: ƒ ()get type: ƒ ()get url: ƒ ()__proto__: Object

Как я могу включить объект модели в ответ на запрос Post, чтобы я мог использовать его на внешнем интерфейсе без повторного запроса?

1 Ответ

0 голосов
/ 18 ноября 2018

Сначала , убедитесь, что ваш запрос в rout.rb имеет {:format => :json}, как показано ниже, если ваш ответ обычно в формате JSON:

post 'create_item' => 'items#create', as: 'public_holidays_by_year', :defaults => {:format => :json}

Второй , вам нужно определить параметр, который будет переносить данные project, как показано ниже:

render json: {status: 201, project: project}

ИЛИ

render json: project 

В последнем варианте не нужно определять статус 201, так как он будет создан автоматически рельсами для запроса на создание, проверьте ссылку ниже:
https://guides.rubyonrails.org/layouts_and_rendering.html#the-status-option

...