ruby-on-rails 在Rails中生成Google方向

4uqofj5v  于 2022-12-30  发布在  Ruby
关注(0)|答案(1)|浏览(130)

我有一个方法CustomGoogleDirections

class CustomGoogleDirections < GoogleDirections
  @@base_url = "https://maps.googleapis.com/maps/api/directions/xml"
end

我在我的控制器中调用它来基于散列找到位置:

@locations = @all_locations.each_cons(2).with_index.with_object({}) do |((e1, e2), i), h|
  h[i + 1] =
    [e1, e2,
     CustomGoogleDirections.new(e1, e2, key: Figaro.env.google_translate_secret_key).distance_in_miles, CustomGoogleDirections.new(e1, e2, key: Figaro.env.google_translate_secret_key).drive_time_in_minutes.url]
end

这将导致错误:

Errno::ENOENT (No such file or directory @ rb_sysopen - https://maps.googleapis.com/maps/api/directions/xml?destination=60%2BBarron%2BRoad%252C%2BDubai%252C%2BDubai&key=######################&origin=60%2BAlFhaged%2BRoad%252C%2BDubai%252C%2Dubai)

在我升级Rails之前,它曾经工作得很好。请问有没有人知道我错过了什么?
(When我使用了生成的xml链接,它确实正确加载了所有long/lat信息)

uujelgoq

uujelgoq1#

我找到了一个解决方案,通过修改gem,更改:

@url = @@base_url + '?' + @options.to_query
@xml = open(@url).read
@doc = Nokogiri::XML(@xml)
@status = @doc.css('status').text

致:

@url = @@base_url + '?' + @options.to_query
@response = Net::HTTP.get_response(URI(@url))
@doc = Nokogiri::XML(@response.body)
@status = @doc.css('status').text

它在当地工作,但不确定这是正确的方法。

相关问题