使用数组的用户葡萄实体
User Grape Entity with Arrays
我想知道 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
“结果['hits']['hits']”填充了包含数据的 10 个哈希值。数据存在。但是,当我查看结果时,我得到:
[
{
"type": null,
"id": null,
"score": null,
"highlight": null
},
{
"type": null,
"id": null,
"score": null,
"highlight": null
},
......
我是做错了什么,还是这根本不可能。我似乎无法挖掘有关数组主题的任何文档。
干杯
汤姆
我发现错误,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 Issue 进行修复,因为一个简单的
object[attribute] || object[attribute.to_s]
将解决整个问题,而不是仅使用
object[attribute]
读取属性。
我想知道 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
“结果['hits']['hits']”填充了包含数据的 10 个哈希值。数据存在。但是,当我查看结果时,我得到:
[
{
"type": null,
"id": null,
"score": null,
"highlight": null
},
{
"type": null,
"id": null,
"score": null,
"highlight": null
},
......
我是做错了什么,还是这根本不可能。我似乎无法挖掘有关数组主题的任何文档。
干杯
汤姆
我发现错误,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 Issue 进行修复,因为一个简单的
object[attribute] || object[attribute.to_s]
将解决整个问题,而不是仅使用
object[attribute]
读取属性。