[英]How to use Geokit on a rails project
我正在使用Rails 4.2.0和Ruby 2.2.0。 我想使用geokit将地址转换为纬度和经度。 我已经在终端中安装了gemkit geokit。 我还在我的Gemfile中添加了gem'geokit',然后运行bundle install。
在控制器上,我尝试使用功能Geokit :: Geocoders :: GoogleGeocoder.geocode()。
当我像这样使用它时,出现以下错误:未初始化的常量AnswersController :: Geocoders(我的控制器称为Answers)
当我尝试在控制器的开头添加require'geokit'时,出现错误:无法加载--geokit这样的文件。
您对我能解决这个问题有什么想法吗?
提前致谢
这是我的控制器
require 'rubygems'
require 'geokit'
class AnswersController < ApplicationController
before_action :set_answer, only: [:show, :edit, :update, :destroy]
def render_page2
render('page2')
end
def answer_page2
if params[:address_origin] && params[:address_destination]
session[:lat_origin] = Geokit::Geocoders::GoogleGeocoder.geocode(params[:address_origin]).lat
session[:lon_origin] = Geokit::Geocoders::GoogleGeocoder.geocode(params[:address_origin]).lng
session[:lat_destination] = Geokit::Geocoders::GoogleGeocoder.geocode(params[:address_destination]).lat
session[:lon_destination] = Geokit::Geocoders::GoogleGeocoder.geocode(params[:address_destination]).lng
#session[:lat_origin] = 37.793688
#session[:lon_origin] = -122.3958692
#session[:lat_destination] = 37.866437
#session[:lon_destination] = -122.265415
redirect_to '/page3'
else
flash[:message] = "All the questions are required on this page."
redirect_to '/page2'
end
end
end
我已经在终端中安装了gemkit geokit。 我还在我的Gemfile中添加了gem'geokit',然后运行bundle install。
无需同时执行这两项操作。
请按照以下步骤操作,以确保正确安装了geokit
gem:
一种。 在Gemfile中添加geokit
gem
# Gemfile
gem 'geokit'
b。 运行bundle install
; 验证gem是否与bundle show geokit
一起安装。
C。 在rails控制台中尝试以下操作:
$ rails console
> a=Geokit::Geocoders::GoogleGeocoder.geocode '140 Market St, San Francisco, CA'
=> #<Geokit::GeoLoc:0x007fe877305c70 @all=[#<Geokit::GeoLoc:0x007fe877305c70 ...>], @street_address="140 Market Street", @sub_premise=nil, @street_number="140", @street_name="Market Street", @city="San Francisco", @state=nil, @state_code="CA", @state_name="California", @zip="94105", @country_code="US", @province="CA", @success=true, @precision="address", @full_address="140 Market Street, San Francisco, CA 94105, USA", @lat=37.793688, @lng=-122.3958692, @provider="google", @neighborhood="Financial District", @district="San Francisco County", @country="United States", @accuracy=8, @suggested_bounds=#<Geokit::Bounds:0x007fe8772fef60 @sw=#<Geokit::LatLng:0x007fe8772fef88 @lat=37.7923338697085, @lng=-122.3972116302915>, @ne=#<Geokit::LatLng:0x007fe8772ff050 @lat=37.7950318302915, @lng=-122.3945136697085>>>
> a.ll
=> "37.793688,-122.3958692"
我想我找到了解决方案。 代码很好,Prakash发布的所有步骤都很好。
但是运行这些步骤后,我需要在终端上重新启动Rails服务器,这就是为什么它在浏览器上不起作用的原因! 现在正在工作。
谢谢大家的回答。 我不知道这是否是最好的解决方案,但至少可以奏效。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.