地理编码器可使用两个地址

2024-04-15

带有 Geocoder gem 的 Rails 4.1.3 应用程序在模型上具有以下属性

  t.decimal :origin_lon, :precision => 15, :scale => 10
  t.decimal :origin_lat, :precision => 15, :scale => 10
  t.point :origin_lonlat, :srid => 3857
  t.decimal :destination_lon, :precision => 15, :scale => 10
  t.decimal :destination_lat, :precision => 15, :scale => 10
  t.point :destination_lonlat, :srid => 3857

该模型定义为

geocoded_by :origin, :latitude  => :origin_lat, :longitude => :origin_lon
geocoded_by :destination, :latitude  => :destination_lat, :longitude => :destination_lon

但是,如果我在控制台中运行:

Circuit.create(origin: 'avenue des Champs-Élysées, 90 Paris', destination: 'Place Mariejol, Antibes')

别找了,这是毕加索博物馆……
仅填充目标数据。如果顺序为geocoded_by指令被反转并重新启动服务器,然后填充原始数据。很明显只有一个要求geocoded_by在这种语法下是可能的。

什么语法允许同时进行两个搜索?


问题是geocoded_by calls geocoder_init https://github.com/alexreisner/geocoder/blob/v1.2.13/lib/geocoder/models/active_record.rb#L12,其中仅包含一组选项 https://github.com/alexreisner/geocoder/blob/v1.2.13/lib/geocoder/models/base.rb#L35, so geocoded_by :destination破坏者geocoded_by :origin.

def geocoder_init(options)
  unless defined?(@geocoder_options)
    @geocoder_options = {}
    require "geocoder/stores/#{geocoder_file_name}"
    include Geocoder::Store.const_get(geocoder_module_name)
  end
  @geocoder_options.merge! options
end

您可以编写自己的 ActiveRecord 挂钩来对两者进行地理编码:

class Circuit < ActiveRecord::Base
  before_save :geocode_endpoints

  private

  def geocode_endpoints
    if origin_changed?
      geocoded = Geocoder.search(origin).first
      if geocoded
        self.origin_lat = geocoded.latitude
        self.origin_lon = geocoded.longitude
      end
    end
    # Repeat for destination
  end
end

看看geocode method https://github.com/alexreisner/geocoder/blob/v1.2.13/lib/geocoder/stores/active_record.rb#L270-L284看看 gem 是如何做到的,它处理什么样的错误。等等。不幸的是,我们不能使用do_lookup https://github.com/alexreisner/geocoder/blob/v1.2.13/lib/geocoder/stores/base.rb#L83因为这依赖于配置的选项而不是接受参数。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

地理编码器可使用两个地址 的相关文章

  • 请求完成时间大于 ActiveRecord 和 View 时间之和

    以下是一些示例请求完成时间 Completed 200 OK in 1054ms Views 10 8ms ActiveRecord 455 6ms Completed 200 OK in 1410ms Views 11 6ms Activ
  • Rails 4 - 如何链接到 PDF 文件(名称.PDF)?

    我正在生成 PDF 文件 我的链接如下所示 当我点击这个时 它会带我去 display invoice 123456789 这是一个 HTML 版本 在控制器中的操作如下 def display invoice if params invo
  • Rails 中的 PDF 导出

    我需要将包含一些图表的 HTML 页面导出为 PDF 有哪些好的 gem 可以做到这一点 PDFKit http railscasts com episodes 220 pdfkit http railscasts com episodes
  • 捆绑安装无法从 https://rubygems.org/ 获取规格

    我正在尝试遵循 Hartl Rails 教程 但在使用捆绑器 gem 时遇到了问题 使用命令 bundle install 或 bundle update 时 我得到以下输出 从中获取源索引https rubygems org https
  • 为什么 mongrel 没有在 Rails 3.2.rc 中启动?

    启动 mongrel 的 GEMFILE gem rails 3 1 0 gem mongrel gt 1 2 0 pre2 启动 WEBrick 的 GEMFILE 不是杂种 gem rails 3 2 0 rc2 gem mongrel
  • 使用 Ajax 在输入时提交 Textarea,然后渲染部分内容而不刷新整个页面

    目前我正在尝试通过 JS 和 Ajax 在没有提交按钮的情况下发表评论 并且它有效 问题是当帖子提交时 页面重新加载到 post id comment页面 我希望它呈现部分内容 而不是刷新整个页面或将我带到不同的页面 我对 JS 不熟悉 任
  • Ruby on Rails REST 设计问题 - 在账户之间转账

    我有一个 Account 类 想要实现转账屏幕以允许用户在 2 个账户之间转账 我将如何实现这种 RESTful 方式 我有标准帐户和休息操作 那很好 但我该如何实现转移呢 通常我只会向帐户控制器和相应的视图添加一个名为 transfer
  • Rails 4:资产未在生产中加载

    我正在尝试将我的应用程序投入生产 但图像和 CSS 资源路径不起作用 这是我目前正在做的事情 图像资源位于 app assets images image jpg 样式表位于 app assets stylesheets style css
  • Rails 3 在 Ruby 1.9.2 上初始化非常慢

    我使用 RVM 来管理环境 安装了 Ruby 1 9 2 p136 我认为是最新版本 和 Rails 3 创建了 gemset 并运行捆绑器 到目前为止一切正常 但 Rails 在运行命令 即生成 销毁 rake 等 时初始化速度非常慢 完
  • Rails、REST 架构和 HTML 5:带有预检请求的跨域请求

    在致力于使我们的网站 HTML 5 友好的项目时 我们渴望采用跨域请求的新方法 不再通过隐藏的 iframe 发布 使用访问控制 http www w3 org TR access control 根据规范 我们开始设置一些测试来验证各种浏
  • Ruby on Rails:如何使用 TCP 套接字连接 GPS 设备

    ruby 2 3 0p0 2015 12 25 修订版 53290 x86 64 linux 轨道 4 2 4 我正在使用 cloud9 IDE 和 webrick 服务器 我的项目是实时跟踪GPS 我想使用TCP连接与GPS跟踪设备进行通
  • Rails/Nginx 中的超时——最佳实践

    我正在开发一个应该在 Nginx 服务器上运行的 Rails 应用程序 根据输入 应用程序可能需要很长时间来处理请求 或者在出现错误时挂起 因此我想防止进程永远运行 除了确保客户端收到超时信号的 Nginx 配置之外 我想我可能仍然需要确保
  • Rails 4 使用 ajax、jquery、:remote => true 和 respond_to 渲染部分

    使用 AJAX 动态渲染页面以响应提交的表单似乎很常见 其他类似的问题都没有集中于如何以一般方式做到这一点 我能找到的关于这个主题的最好的博客文章在这里 http www gotealeaf com blog the detailed gu
  • 如何加载页面特定的rails 4 js文件?

    我正在阅读资产管道的 Rails 指南文档 它指出 CoffeeScript 页面特定生成的文件 如果清单上有 require tree 指令 则默认情况下可供用户使用 这对我不起作用我必须包括这个 在特定控制器上 我缺少什么 资产管道会将
  • RoR - Rails 中的大文件上传

    我有一个 Rails Web 应用程序 允许用户上传视频 视频存储在 NFS 安装的目录中 当前的设置适用于较小的文件 但我也需要支持大文件上传 最多 4GB 当我尝试上传 4GB 文件时 它最终会发生 但从用户体验的角度来看很糟糕 上传开
  • 服务器上的 Rails 会话

    我想让一些 Rails 应用程序在不同的服务器上共享同一个会话 我可以在同一服务器内完成此操作 但不知道是否可以在不同服务器上共享 有人已经做过或者知道怎么做吗 Thanks Use the 数据库会话存储 https github com
  • 我想要一个默认选择空白值的日期选择框

    我用了以下date select助手 但没有一个显示默认情况下选择空白值的日期选择框 通过以下所有代码 我得到了选择框 但选择了当前日期 我在 Rails 2 3 2 上
  • Shoulda/RSpec 匹配器 - 条件验证

    在我的代码中 我使用 Shoulda 匹配器进行了以下验证 效果很好 it should validate presence of name 在我的模型中 我已将条件添加到验证中 validates presence of name if
  • Rails 安全:完全避免大规模分配

    我倾向于不需要批量分配 http guides rubyonrails org security html mass assignment我的生产代码中的功能 在我的测试代码中 我经常使用它 但在这些情况下我do想要设置任意列 因此 如果在
  • 将查询字符串参数作为表单发布的一部分发送

    有没有办法捕获查询字符串并将其作为表单帖子的一部分发送 我正在使用 Rails 2 3 5 我的用户所在的页面有多个查询字符串参数 在此页面上 他们将提交一份表格 在接收帖子的操作中 我想知道这些查询字符串参数是什么 显然 它们不是作为邮件

随机推荐

  • 玩!没有正确关闭 H2

    我正在使用 Play 编写一个部署在 Tomcat 中的 Web 应用程序 因为应用程序不会处理太多数据 所以我将默认的 H2 数据库与 Hibernate 一起使用 当我想要部署新版本的应用程序时 我关闭 tomcat 擦除旧的 web
  • 如何使 bash 脚本与一个又一个命令一起工作?

    我有一个如下所示的 bash 脚本 首先 它将sorted bam 文件作为输入 并使用 stringtie 工具将每个样本gtf 作为输出 然后每个样本 gtf 的路径将被赋予到 mergelist txt 中 然后对它们使用 strin
  • 如何跟踪 celery 中的重试次数

    在 Celery 中 如何跟踪当前的重试 我知道我可以做这样的事情 app task bind True default retry delay 900 max retries 5 def send email self sender No
  • 活动开启两次

    我有一个使用的应用程序城市飞艇 http urbanairship com 用于推送通知 当通知到达并且用户单击它时 我的应用程序中的活动 A 应该打开并执行某些操作 我已经安装了BroadcastReceiver如图所示在文档中 http
  • 在 C++ 中将数组转换为集合

    有没有更简单的方法使用 C 将数组转换为集合而不是循环遍历其元素 最好使用标准模板库 对于所有标准库容器类型 请使用构造函数 http en cppreference com w cpp container set set std set
  • ASP.NET Owin OAuth (Google / Facebook) 正在重定向到默认的 login.aspx,而不是远程登录页面

    我正在使用 Owin 库 包括 Google 和 Facebook 设置 OAuth 从表面上看 Owin 启动课程注册得很好 我发现我没有被重定向到 Facebook 或 Google 的相应登录页面 而是被重定向到默认的 login a
  • 从 SDK 上的“getLastKnownLocation”获取 null

    我有一个与位置 API 相关的问题 我尝试了以下代码 LocationManager lm LocationManager getSystemService Context LOCATION SERVICE Location loc get
  • 避免 D3.js 中子节点重叠

    我正在使用 D3 js 构建一个树结构 显示 Facebook 用户和他 她的 Facebook 好友 根节点是用户 子节点是好友 我的 UI 中有固定宽度 问题是子节点将相互重叠 var nodes tree nodes root rev
  • 使用 Resharper 7 测试运行程序进行 Jasmine 测试的堆栈跟踪

    如何让 Resharper 7 测试运行程序显示 Jasmine 测试的堆栈跟踪 我的设置是 Resharper 7 在 Jasmine 中构建 测试运行器和 PhantomJs 执行任何失败的测试时 错误消息始终以以下内容结尾 Excep
  • jquery-ui - 取消拖动转义键

    我有一个可拖动的列表divs 和一个可放置区域 在 chrome FF 和 IE9 中 鼠标拖放功能运行良好 我想添加键盘交互 拖拽div使用按键时应恢复到列表esc钥匙 所以首先我这样做了 document keyup function
  • ng-grid 行模板中的日期格式

    我创建了一个具有以下列定义的 ng grid columns field CompanyPkid visible false field CompanyName visible false field StartDate visible f
  • 如何让用户能够使用我的应用程序播放视频?

    昨晚刚刚花了几个小时为 Honeycomb 开发了一个非常漂亮的视频播放器 现在我当然希望人们能够使用它 如何让我的应用程序监听 接收 视频播放广播 我猜这与manifest xml文件 但我无法在 Android 开发者网站上找到任何有关
  • 然后 Groupby 检查行匹配并计算该值的并发实例数

    我有这个数据框 car color years max years 0 audi black 1 7 1 audi blue 2 7 2 audi purple 4 7 3 audi black 6 7 4 bmw blue 1 5 5 b
  • 为什么 CAS(原子)操作比同步或易失性操作更快

    据我了解 synchronized关键字将本地线程缓存与主内存同步 volatile 关键字基本上总是在每次访问时从主内存中读取变量 当然 访问主内存比本地线程缓存要昂贵得多 因此这些操作的成本很高 然而 CAS 操作使用低级硬件操作 但仍
  • 有条件的 Mercurial 忽略文件

    我在 Mercurial 中有一个文件 我希望开发机器提取该文件 但我希望部署服务器不提取该文件 它具有开发机器没有的特殊模块 这是可能的 还是我应该有一个自定义的推送到服务器解决方案 而不是仅仅进行 hg pull 执行此操作的典型方法是
  • H2O R api:从网格搜索中检索最佳模型

    我正在使用h2oR 中的包 v 3 6 0 并且我构建了一个网格搜索模型 现在 我正在尝试访问最小化验证集上的 MSE 的模型 在Python中sklearn 这在使用时很容易实现RandomizedSearchCV Pseudo code
  • 如何将 Windows 桌面应用程序转换为 Mac 桌面应用程序?

    我需要将 C NET Windows 桌面应用程序转换为 Mac 我读过有关 Qt REAL Studio LiveCode RunRev wxWidgets 和 Mono 的跨平台方面的内容 www mono project com 和h
  • 如何使用 Maven 在构建时正确增强类? OpenJPA

    我在尝试着enhance 实体 类 所以我不会得到这个异常 Exception in thread main
  • CGImageRelease:[不是类型发布]:发送到已释放实例的消息

    我在代码 CGImageRelease imageToSave 的最后一行收到此错误 不是类型发布 消息发送到已释放的实例 请解释原因以及我需要使用什么来修复它 我正在使用 ARC 但我认为这不适用于 CG 对象 在测试代 码是否有效后 我
  • 地理编码器可使用两个地址

    带有 Geocoder gem 的 Rails 4 1 3 应用程序在模型上具有以下属性 t decimal origin lon precision gt 15 scale gt 10 t decimal origin lat preci