Rails geocoder gem问题

时间:2011-09-22 06:54:04

标签: ruby-on-rails ruby-on-rails-3 rubygems geolocation geocoding

我正在使用地理编码器gem,我需要为模型编写起始和结束地址,但是我不确定我是否可以使用此gem完成此操作,如果我可以正确执行此操作。如果使用gem无法做到这一点,是否有另一种资源可以让我在同一表单上对两个位置进行地理编码?这是我想要做的一个例子,但它只是通过第二个地址进行地理编码。

geocoded_by :start_address
before_validation :geocode
geocoded_by :delivery_address, :latitude => :end_latitude, :longitude => :end_longitude
before_validation :geocode

2 个答案:

答案 0 :(得分:1)

如果查看源代码,看起来好像有一个选项哈希值会被覆盖active_record.rbbase.rb

我认为有两种选择:将地址移动到包含的(加入的)模型(如Address或其他东西),或者fork地址解析器按键有多个选项。第一个更容易,并解决了问题。第二个更酷(可能会把自己当成一个卡塔)。

答案 1 :(得分:1)

所以发生的事情只是简单的红宝石......如果你这样做:

class Question
  def ask
    "what would you like?"
  end

  def ask
    "oh hai"
  end
end

Question.new.ask
 => "oh hai"

最后一个方法定义胜出...所以当你声明两个geocoded_by方法时,第二个是重要的方法。

我认为您将不得不使用gem

进行手动地理编码
before_validation :custom_geocoding

def custom_geocoding
  start_result = Geocoder.search(start_address)
  end_result = Geocoder.search(delivery_address)
  # manually assign lat/lng for each result
end