我有一个具有单个地址属性的模型。 address属性是一个字符串,因此用户可以使用一个地址属性输入完整地址。地理编码器是否能够从一个属性生成经度或纬度,或者如果我希望地理编码器生成正确的信息,我是否必须使用多个属性,如邮政编码,城市和州?
我之所以提出这个问题的原因是因为我尝试以单一属性的方式进行,而地理编码器不会返回任何内容。显然,当我在仪表板操作中运行调试器时,代码在尝试获取供应商的纬度和经度时会遇到无限循环。
仪表板的方法:
def dashboard
if params[:search].present?
@vendors = Vendor.near(params[:search], 50)
@hash = Gmaps4rails.build_markers(@vendors) do |vendor, marker|
marker.lat vendor.latitude
marker.lng vendor.longitude
marker.infowindow vendor.discount_info
marker.picture ({
"url" => "assets/marker.png",
"width" => 32,
"height" => 32})
end
else
@vendors = Vendor.all
@hash = Gmaps4rails.build_markers(@vendors) do |vendor, marker|
marker.lat 37.3352
marker.lng -121.8811
marker.picture ({
"url" => "assets/marker.png",
"width" => 32,
"height" => 32})
end
end
end
供应商模型:
class Vendor < ActiveRecord::Base
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable, :confirmable,
:recoverable, :rememberable, :trackable, :validatable
geocoded_by :address
after_validation :geocode, :if => :address_changed?
end