【问题标题】:How do I include a newly created model object in my Rails API response to a post request?如何在我的 Rails API 对发布请求的响应中包含新创建的模型对象?
【发布时间】:2018-11-18 15:53:10
【问题描述】:

我有一个 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 请求的响应中包含模型对象,以便我可以在前端使用它而无需发出其他请求?

【问题讨论】:

  • response.json() 中有什么内容?

标签: ruby-on-rails rails-api


【解决方案1】:

首先,请确保您在 routes.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,因为它会由 rails 为创建请求自动创建,请查看以下链接:
https://guides.rubyonrails.org/layouts_and_rendering.html#the-status-option

【讨论】:

    猜你喜欢
    • 2011-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-15
    • 2020-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多