Ruby API响应视图:如何呈现JSON响应?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ruby API响应视图:如何呈现JSON响应?相关的知识,希望对你有一定的参考价值。

我是Ruby的新手,正在尝试构建API。

我遵循了教程,并且在调用API端点时能够返回JSON响应。

在此示例中,调用的函数引发了一个错误,我希望将其作为JSON响应传递。

my_controller.rb

class MyController < ApplicationController
  def getTracklist

    begin
      importer = #this raises an error
    rescue StandardError => e
      @response = {
      error:  e.message,
      }
      return @response
    end

  end

end

我的观点如下:

getTracklist.json.jbuilder

json.response @response

事物是

这有效,但我的回复为

{"response":{"error":"the error message"}}

当我想要它时

{"error":"the error message"}

我尝试将视图更改为

json @response

但失败了:

ActionView :: Template :: Error(未定义的方法'json'为是什么意思? JSON):1:json @response

所以我如何将响应完全“呈现”而不必将其放在属性中?

[我在阅读有关ROR的内容时也看到过有时会使用此代码,我想知道在这种情况下如何使用它:

render json: { error_code:'not_found', error: e.message }, status: :not_found

谢谢!

答案

有多种方法可以实现您想要的。您可以将响应merge!放入jbuilder根目录。

merge!

上面将所有键/值对合并到jbuilder根目录中。您也可以选择json.merge! @response 特定属性。

extract!

或者,您已经可以在控制器中简单地渲染它了,因为您已经组成了结构,下面的内容就足够了。

extract!
另一答案

您可以为jBuilder执行此操作:

json.extract! @response, :error

render json: @response

另一答案
json.merge!(@response)

对控制器进行这些更改可以帮助您满足要求。完成此操作后,您无需查看。

以上是关于Ruby API响应视图:如何呈现JSON响应?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用模型/集合获取 4 个 JSON (API) 响应到主干.js 中的一个视图

如何在 React js 中将 HTML 模板呈现为来自 json 的响应

使用 Pandas 从 BigQuery 呈现 JSON 响应?

如何通过匹配来自两个 API 的 id 来查看来自两个 JSON API 的响应到单个回收器视图适配器中?

Ruby on Rails,json vs js ajax 响应

如何解析表格视图上的 api 响应?