Ruby on rails 使用Geokit触发自动地理编码
我目前正致力于在我的项目中实现Geokit。我想获取用户输入到创建网站上的信息,对地址进行地理编码,并使用创建的新纬度和经度创建条目。但是,用户不会输入lat或long,因为我们的geokit会为他们输入。总的来说,当用户按下“创建”按钮时,我们的控制器应该获取所有信息(假设已经验证)对给定地址进行地理编码,并使用生成的lat和long创建新条目。我有一些一般的想法如何,但不确切地说,如果直接改变控制器是正确的方法这样做。我已经包括了我的控制器代码以获得视觉帮助。非常感谢Ruby on rails 使用Geokit触发自动地理编码,ruby-on-rails,geokit,Ruby On Rails,Geokit,我目前正致力于在我的项目中实现Geokit。我想获取用户输入到创建网站上的信息,对地址进行地理编码,并使用创建的新纬度和经度创建条目。但是,用户不会输入lat或long,因为我们的geokit会为他们输入。总的来说,当用户按下“创建”按钮时,我们的控制器应该获取所有信息(假设已经验证)对给定地址进行地理编码,并使用生成的lat和long创建新条目。我有一些一般的想法如何,但不确切地说,如果直接改变控制器是正确的方法这样做。我已经包括了我的控制器代码以获得视觉帮助。非常感谢 总体问题-您将地址地理
总体问题-您将地址地理编码方法和自动使用生成的lat和long创建其余数据条目的方法放在哪里
class PocsController < ApplicationController
结束
#GET/pocs/1
#GET/pocs/1.json
def秀
@poc=poc.find(参数[:id])
@pocs=Poc.all
respond_to do |format|
format.html # show.html.erb
format.json { render json: @poc }
end
结束
#获取/pocs/new
#GET/pocs/new.json
def新
@poc=poc.new
respond_to do |format|
format.html # new.html.erb
format.json { render json: @poc }
end
结束
#GET/pocs/1/编辑
定义编辑
@poc=poc.find(参数[:id])
结束
#邮政/邮政编码
#POST/pocs.json
def创建
@poc=poc.new(参数[:poc])
结束
#PUT/pocs/1
#PUT/pocs/1.json
def更新
@poc=poc.find(参数[:id])
结束
#删除/pocs/1
#删除/pocs/1.json
def销毁
@poc=poc.find(参数[:id])
@摧毁
respond_to do |format|
format.html { redirect_to pocs_url }
format.json { head :no_content }
end
结束
结束根据您对问题本身的评论,听起来您正在寻求帮助,以确定在何处插入地理编码。据了解,Geokit可以为您处理此问题。因此,您的app/model/Poc.rb应该只需要:
class Poc < ActiveRecord::Base
acts_as_mappable :auto_geocode=>true
end
类Poc地址
、纬度
和液化天然气
的字段(或者需要指定您自己的覆盖)
由于这在创建之前定义了一个,它将在创建新Poc时自动运行。如果地址字段更改,则不包括更新lat/lng字段的情况。。。但是,通过研究ActiveModel回调,我敢打赌,如果需要的话,您可以找到如何处理它 你的具体问题是什么?你将地址地理编码的方法放在哪里,并自动使用生成的lat和long创建其余的数据条目?好的,在下面发布了一个答案。这非常有帮助,因为我无法理解(抱歉,这是新的)但是我想知道,现在我们在模型中有了这些信息,我们把获取地址的代码放在哪里,生成lat和long,并在创建新POC时使用它们?我见过这样的代码:require'geokit'include geokit::Geocoders coords=MultiGeocoder.geocode(location)puts coords.lat puts coords.lng,但我不确定该放在哪里。非常感谢您的帮助,我非常感谢。由于您正在将
:auto_geocode
设置为true,该过程将自动进行。创建新Poc时,address
字段将被读取、地理编码并保存到lat
和lng
字段中。换句话说,您只需指定地址
字段,lat
和lng
将在保存记录之前自动填充。是的,我可能错过了它,但文档应该指定您需要自己添加地址、lat和lng字段。
respond_to do |format|
if @poc.update_attributes(params[:poc])
format.html { redirect_to @poc, notice: 'Poc was successfully updated.' }
format.json { head :no_content }
else
format.html { render action: "edit" }
format.json { render json: @poc.errors, status: :unprocessable_entity }
end
end
respond_to do |format|
format.html { redirect_to pocs_url }
format.json { head :no_content }
end
class Poc < ActiveRecord::Base
acts_as_mappable :auto_geocode=>true
end