簡體   English   中英

從數據庫(RoR)生成具有多個記錄的json

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM