簡體   English   中英

用geokit導軌過濾-劑量顯示任何數據

[英]Filtering with geokit rails - dosent show any data

我正在使用Ruby On Rails構建用於webbapp的API,我正在將Jbuilder用於API / JSON和Geokit。

我有這個模型:

運動

class Campaign < ActiveRecord::Base
    belongs_to :company
    belongs_to :venue
    belongs_to :category
    has_and_belongs_to_many :venues
    has_many :cities, through: :venues
    has_many :uses
end

公司

class Company < ActiveRecord::Base
  has_many :venues
  has_many :campaigns
  validates :name, presence: true
end

會場

class Venue < ActiveRecord::Base

    acts_as_mappable :default_units => :kms,
                     :lat_column_name => :lat,
                     :lng_column_name => :lng

    belongs_to :company
    belongs_to :city
    has_and_belongs_to_many :campaigns

end

我正在嘗試按給定的緯度和經度坐標列出所有廣告系列,如下所示:

class API::CampaignsController < ApplicationController
    respond_to :json

    def index
        @campaigns = filter
        respond_with @campaigns
    end
    def filter
        if params[:city_id]
            Campaign.includes(:venues, :cities).where('cities.id' => params[:city_id])
        elsif params[:lat] && params[:lng]
            lat = params[:lat].to_f
            lng = params[:lng].to_f
            Campaign.includes(:venues, :cities).within(10, :origin => [lat, lng])
        end
    end

end

但是我得到的只是一個空哈希:

{
campaigns: [ ]
}

是否對我做錯了什么以及如何解決此問題有任何看法?

按照服務器日志, GET "/api/campaigns?lat=55.563466?lng=12.973509" ,你是不是通過params[:city_id]讓你在這兩個條件下filter方法將失敗,並沒有查詢將被執行。 因此,空campaigns

acts_as_mappableVenue模型上,因此within僅適用於該模型。 我認為您想要的filter方法如下:

  def filter
    if params[:city_id]
      Campaign.includes(:venues, :cities).where('cities.id' => params[:city_id])
    elsif params[:lat] && params[:lng]
      lat = params[:lat].to_f
      lng = params[:lng].to_f
      Venue.within(10, :origin => [lat, lng]).includes(:campaigns, :city).each do |venue|
        campaigns << venue.campaigns  
      end
      campaigns
    end
  end

此外,網址應為/api/campaigns?lat=55.563466&lng=12.973509

注意:

lng作為單獨的query param傳遞, &前綴為&lng而不是?lng

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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