我有以下代码,预计会返回包含多个参数从DB中选择的数据的复杂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请求的参数数组的占位符。
问题是我在查询行收到以下错误:
没有将符号隐式转换为整数
我也试过遍历循环中的参数数组并查询每条记录,但是json只生成最后一条记录。
答案 0 :(得分:0)
您有params[:beacon][:ids]
和params[:beacon][:prox_uuids]
,但params[:beacon]
是一个数组,所以应该用整数索引,例如。 params[:beacon][0]
。因此,错误告诉您:ids
(符号)无法隐式转换为整数,以便正确引用params[:beacon]
数组。