And*_*erg 2 ruby postgis ruby-on-rails geos rgeo
90%肯定这是我的设置错误,但我不能做self.factory并试图访问lonlat给我一个例外"未定义的方法'点'为nil:NilClass"
设置lonlat使用:
mfactory = RGeo::ActiveRecord::SpatialFactoryStore.instance.factory(:geo_type => 'point')
self.lonlat = mfactory.point(long, lat)
self.save
Run Code Online (Sandbox Code Playgroud)
这给了我像0101000020E610000061C3D32B65965DC03657CD7344F64040数据库中的值.
我不能用:
self.lonlat = "POINT(#{long},#{lat})"
self.save
Run Code Online (Sandbox Code Playgroud)
我是否需要在模型中设置特定的内容?
And*_*erg 13
RGeos依赖于GEOS.此错误是RGeos无法加载GEOS的结果.
要检查这是否是问题:
$ rails c
> RGeo::Geos.supported?
=> false
Run Code Online (Sandbox Code Playgroud)
要检查是否安装了GEOS:
geos-config --version
Run Code Online (Sandbox Code Playgroud)
如果未安装GEOS:
brew install geos
Run Code Online (Sandbox Code Playgroud)
如果已安装GEOS,请修复已安装的RGeo:
$ geos-config --prefix
/usr/local/Cellar/geos/3.5.0
$ gem install rgeo -- --with-geos-dir=/usr/local/Cellar/geos/3.5.0
Run Code Online (Sandbox Code Playgroud)
现在应该正确安装并修复您的错误.你可以像我们上面那样检查:
$ rails c
> RGeo::Geos.supported?
=> true
Run Code Online (Sandbox Code Playgroud)
如果这不起作用,请卸载所有版本的geos和rgeo:
$ brew uninstall geos
$ gem uninstall rgeo
Run Code Online (Sandbox Code Playgroud)
按照上面的说明重新安装geos和rgeo.您应该在Gemfile中使用gem'rosso',在捆绑之后,您应该将其视为输出之一:"使用本机扩展安装rgeo 0.4.0"