带有数组的用户Grape实体

时间:2016-05-25 14:18:24

标签: ruby-on-rails grape-api grape-entity

我想知道Grape Entity是否能用于渲染哈希数组,我以为我重新编写了它的工作原理但是我现在无法让它工作,我做了一些明显的错误吗?这是我的实体:

class V1::Entities::Searchresult < Grape::Entity
   expose :_type, as: :type
   expose :_id, as: :id
   expose :_score, as: :score
   expose :highlight
end

在我的API中,我将这样的渲染称为:

present result['hits']['hits'], with: V1::Entities::Searchresult, :params => params

结果[&#39;点击&#39;] [&#39;点击&#39;]&#39;填充了包含数据的10个哈希。数据存在。但是,当我看到结果时,我得到了:

[
  {
    "type": null,
    "id": null,
    "score": null,
    "highlight": null
  },
  {
    "type": null,
    "id": null,
    "score": null,
    "highlight": null
  },
  ......

我做错了什么,或者这根本不可能。我似乎无法挖掘阵列上的任何文档。

干杯

汤姆

1 个答案:

答案 0 :(得分:2)

我发现错误,Grape :: Entity :: Delegator :: HashObject无法使用具有字符串键而不是符号的哈希。它无法提取值。

  data = []
  result['hits']['hits'].each do |item|
    data << item.symbolize_keys
  end

  present data, with: V1::Entities::Searchresult, :params => params

此解决方法省略了该问题。我还将打开一个github问题,因为一个简单的

object[attribute] || object[attribute.to_s]

将解决整个问题而不是仅使用

object[attribute]

阅读属性。