ruby-on-rails - 使用 Grape 将数组中的多个对象组合为 json
问题描述
我在我的 Rails 应用程序中使用了葡萄宝石。返回单个记录时,我可以使用葡萄主动模型序列化程序。返回多个对象时,我遇到了未定义的错误。我应该如何构建我的多个活动记录?
应用程序/控制器/api/v1/campaigns.rb
返回多条记录
resource :campaigns do
desc "Return all campaigns"
get "", root: :campaigns do
@campaign_array = []
@campaigns = Campaign.all
@campaigns.each do |campaign|
@campaign_array << {
backers: campaign.orders.count,
funded: campaign.orders.completed.sum(:quantity),
campaign: campaign
}
end
@campaign_array
end
end
输出 - 错误
undefined method `read_attribute_for_serialization'
返回单个记录
desc "Return a campaign"
get ":id", root: :campaign do
@campaign = Campaign.where(id: permitted_params[:id]).first!
{
backers: @campaign.orders.count,
funded: @campaign.orders.completed.sum(:quantity),
campaign: @campaign
}
end
输出
{
"backers": 1,
"funded": 2,
"campaign": {
"id": 5,
"min_funding_goal_units": 20,
"product_name": "Another product",
"product_description": "A product description",
}
}
解决方案
当它是一个项目数组时,您需要使用 each_serializer 而不是序列化器
github上有一个关于这个问题的问题。相关问题。
推荐阅读
- mongodb - MongoDB:数组中元素的 $geoNear 距离
- javascript - 当我们悬停关闭按钮“X”时打开查询表
- php - 如何修复此登录功能
- ruby-on-rails - 如何指定传递给翻译的参数类型
- javascript - 使用 json 数据填充 html 模板
- elasticsearch - Elasticsearch 只获取那些桶大小大于给定数字的日期直方图
- python - 为什么在类的 __init__ 中调用 mpl_connect 不起作用?
- ansible - 在 playbook 或模板中使用 ini 文件中的 IP 地址
- python - 基于 DataFrame 中多索引的一级值替换值
- java - 数单词时如何避免'?