它的工作原理,如果地址和reverse_geocoded_by在這我不需要(緯度和經度來自其他客戶端)的類。地理編碼方法附近拋出錯誤
爲了找到5英里
Locate.near([center.latitude, center.longitude], 5)
架構
create_table :locate do |t|
t.integer :user_id
# t.string :address
t.float :latitude
t.float :longitude
t.timestamps
end
模型類
class Locate < ApplicationRecord
# reverse_geocoded_by :latitude, :longitude
# after_validation :reverse_geocode, unless: -> (obj) { obj.address.present? },
# if: -> (obj) { obj.latitude.present? and obj.latitude.present? and (obj.latitude_changed? || obj.longitude_changed?) }
end
控制器方法
def near
center = @user.locate
render json: Locate.near([center.latitude, center.longitude], 5, units: :km)
end
之內的所有所處
錯誤:
NoMethodError (undefined method `near' for #Class:#):
絕對,然後它給了我這個錯誤 - NoMethodError(未定義的方法'附近'的#Class:#):當它不使用反向地理編碼 - #reverse_geocoded_by,因爲它不需要。 – srs
當我不使用#reverse_geocoded_by或我將其註釋掉時出現錯誤 – srs
對,如果您想使用'Locate.near'中的座標,您確實需要'#reverse_geocoded_by'。如果你不想使用'#reverse_geocoded_by',那麼你需要使用地址而不是座標。 – EJ2015