2015-04-04 21 views
0

我正在使用Rails 4.2.0和Ruby 2.2.0。我想使用geokit将地址转换为经度和纬度。我已经在我的终端上安装了gemit。我还在gemfile中加入了gem'geokit',并运行bundle install。如何在rails项目上使用geokit

在控制器上,我尝试使用函数Geokit :: Geocoders :: GoogleGeocoder.geocode()。

当我使用它,这样,我得到这个错误:未初始化不断AnswersController ::地址解析器(我的控制器被称为答案)

当我尝试添加要求“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 
+0

向我们展示你的代码在'answers_controller.rb'中。 – Victor 2015-04-04 16:32:43

回答

1

我想我找到了解决方案。代码很好,Prakash发布的所有步骤都很好。

但是我需要在运行这些步骤后重启终端上的rails服务器,这就是为什么它不能在浏览器上工作!现在它正在工作。

谢谢大家的回答。我不知道这是否是最好的解决方案,但至少它是有效的。

1

我已经做宝石安装geokit在我的终端。我还将Gem 'geokit'包含在我的Gemfile中,并运行bundle install。

不需要两者兼而有之。

按照这些步骤,以确保你已经正确安装了geokit宝石:

一个。添加geokit宝石文件中的宝石

# Gemfile 
gem 'geokit' 

b。运行bundle install;验证宝石是否安装了bundle show geokit

c。在轨道控制台上试试以下内容:

$ 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" 
+0

是的,在控制台中工作 – saraf 2015-04-04 16:46:48

+0

我只是不知道如何在我的项目中使用它。我在运行rails server时遇到了这些错误,并使用localhost在浏览器上启动了我的应用程序 – saraf 2015-04-04 16:47:55

相关问题