Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 使用Geokit触发自动地理编码_Ruby On Rails_Geokit - Fatal编程技术网

Ruby on rails 使用Geokit触发自动地理编码

Ruby on rails 使用Geokit触发自动地理编码,ruby-on-rails,geokit,Ruby On Rails,Geokit,我目前正致力于在我的项目中实现Geokit。我想获取用户输入到创建网站上的信息,对地址进行地理编码,并使用创建的新纬度和经度创建条目。但是,用户不会输入lat或long,因为我们的geokit会为他们输入。总的来说,当用户按下“创建”按钮时,我们的控制器应该获取所有信息(假设已经验证)对给定地址进行地理编码,并使用生成的lat和long创建新条目。我有一些一般的想法如何,但不确切地说,如果直接改变控制器是正确的方法这样做。我已经包括了我的控制器代码以获得视觉帮助。非常感谢 总体问题-您将地址地理

我目前正致力于在我的项目中实现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
类Poctrue 结束 注意:您需要名为
地址
纬度
液化天然气
的字段(或者需要指定您自己的覆盖)


由于这在创建之前定义了一个,它将在创建新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