Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.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问题在Rails中进行基于位置的搜索_Ruby On Rails_Search_Geolocation_Geokit - Fatal编程技术网

Ruby on rails 使用geokit问题在Rails中进行基于位置的搜索

Ruby on rails 使用geokit问题在Rails中进行基于位置的搜索,ruby-on-rails,search,geolocation,geokit,Ruby On Rails,Search,Geolocation,Geokit,我的网站上有一个相当复杂的基于geokit的位置搜索。简而言之,我有一个名为“活动”的模型,它属于另一个称为“业务”的模型。当我在网站上搜索时,用户正在搜索活动,但如果他们搜索该活动的商业名称,我希望所有适当的模型都显示在结果中。为此,我在搜索中做了一个连接 此外,我还安装了geokit插件和gem,这样用户只能在距离他们提供的原始位置一定距离内获得这些搜索的结果。然而,当我将此位置功能添加到站点中时,我得到了奇怪的结果 如果为了简洁起见使用以下搜索,但在控制台中进行了测试: Campaign.

我的网站上有一个相当复杂的基于geokit的位置搜索。简而言之,我有一个名为“活动”的模型,它属于另一个称为“业务”的模型。当我在网站上搜索时,用户正在搜索活动,但如果他们搜索该活动的商业名称,我希望所有适当的模型都显示在结果中。为此,我在搜索中做了一个连接

此外,我还安装了geokit插件和gem,这样用户只能在距离他们提供的原始位置一定距离内获得这些搜索的结果。然而,当我将此位置功能添加到站点中时,我得到了奇怪的结果

如果为了简洁起见使用以下搜索,但在控制台中进行了测试:

Campaign.find(:all, 
              :joins => :business, 
              :conditions => ['businesses.name LIKE ?', "%Koo Koo Roo%"]
             )
我得到了适当的结果,即:

[#<Campaign id: 12, user_id: 4, business_id: 8, created_at: "2011-01-14 16:22:31", updated_at: "2011-01-14 16:25:20", lat: #<BigDecimal:2ad295a9eda8,'0.34154891E2',18(18)>, lng: #<BigDecimal:2ad295a9ed08,'-0.118358834E3',18(18)>>]
我得到以下结果:

[#<Campaign id: 8, user_id: 4, business_id: 8, created_at: "2011-01-14 16:25:20", updated_at: "2011-01-14 16:25:20", lat: #<BigDecimal:2ad29933e618,'0.34154891E2',18(18)>, lng: #<BigDecimal:2ad29933e578,'-0.118358834E3',18(18)>>]
任何帮助都将不胜感激。我是否错过了某种联系?我没有打开geokit缓存


谢谢

这是因为id字段正被狡猾的连接代码覆盖。当您加入时,您有两个id字段,一个用于业务,一个用于活动。如果没有关于哪个id的明确指示,DB就会猜测

不幸的是,rails的其中一个版本有一个bug,它没有明确指出本例中的主活动记录id Campaign.id是计数的id。。。db猜错了,用Business.id覆盖了id


您已经发现了一个简单但更粗糙的修复方法。。。另一个是升级rails。

这是因为id字段被狡猾的连接代码覆盖。当您加入时,您有两个id字段,一个用于业务,一个用于活动。如果没有关于哪个id的明确指示,DB就会猜测

不幸的是,rails的其中一个版本有一个bug,它没有明确指出本例中的主活动记录id Campaign.id是计数的id。。。db猜错了,用Business.id覆盖了id


您已经发现了一个简单但更粗糙的修复方法。。。另一个是升级rails。

我发现了这一点。这只是将“连接”更改为“包含”的问题。我不太清楚为什么会这样,但我在GeoKitGitHub页面上看到一个问题,说geokit在连接方面有问题,所以我改变了它,它似乎可以工作!我明白了。这只是将“连接”更改为“包含”的问题。我不太清楚为什么会这样,但我在GeoKitGitHub页面上看到一个问题,说geokit在连接方面有问题,所以我改变了它,它似乎可以工作!
[#<Campaign id: 8, user_id: 4, business_id: 8, created_at: "2011-01-14 16:25:20", updated_at: "2011-01-14 16:25:20", lat: #<BigDecimal:2ad29933e618,'0.34154891E2',18(18)>, lng: #<BigDecimal:2ad29933e578,'-0.118358834E3',18(18)>>]
Business.rb
has_many :campaigns

Campaign.rb
belongs_to :business