[英]Generate json with multiple records from DB (RoR)
我有以下代碼,預期將返回復雜的JSON,其中包含通過多個參數從數據庫中選擇的數據,並包含來自其他模型的數據:
def search
params[:beacon] = [{ 'id' => 1, 'prox_uuid' => 12345453453 }, { 'id' => 2, 'prox_uuid' => 5345634564536435 }]
beacons = Beacon.includes(:ads, :venue).where("id in (?) and proximity_uuid in (?)", params[:beacon][:ids], params[:beacon][:prox_uuids])
data = beacons.map { |beacon| {
id: beacon.id,
name: beacon.name,
:venue => {
id: beacon.venue.id,
name: beacon.venue.name,
logo: URI.join(request.base_url, beacon.venue.logo.url).to_s
},
ads: beacon.ads.inject([]) do |sum, add|
sum << {
id: add.id,
title: add.name,
cover: URI.join(request.base_url, add.file_url.url).to_s,
price: add.price,
description: add.description
}
end
}
}
render json: data.to_json
end
params[:beacon] = [{ 'id' => 1, 'prox_uuid' => 12345453453 }, { 'id' => 2, 'prox_uuid' => 5345634564536435 }]
是來自POST請求的參數數組的占位符。
問題是我在查詢行收到以下錯誤:
沒有將Symbol隱式轉換為Integer
我還嘗試遍歷循環中的參數數組並查詢每條記錄,但是json僅生成最后一條。
您有params[:beacon][:ids]
和params[:beacon][:prox_uuids]
但是params[:beacon]
是一個數組,因此應使用整數索引,例如。 params[:beacon][0]
。 因此錯誤告訴您:ids
(符號)不能隱式轉換為Integer以便正確引用params[:beacon]
數組。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.