它的工作原理,如果地址和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