7

我在尝试根据与用户的接近程度显示某些位置时遇到了一个小问题。在我的控制器中,我有这个:

  if User.find(current_user)
    @user = User.find(current_user)
    @locations = Location.near(params[:latitude => @user.latitude, :longitude => @user.longitude], 50, :order => :distance)
  end

用户存储了经纬度。我想我在 Location.near 行中没有正确的参数,但我不知道它们应该是什么。

任何帮助,将不胜感激。

干杯!

4

2 回答 2

8

让我们试着重写一下,current_user 应该已经设置好了,不需要调用 User.find。然后看起来你可以通过 lat,long 作为一个数组

 @locations = Location.near([current_user.latitude, current_user.longitude], 50, :order => :distance)

http://railscasts.com/episodes/273-geocoder

http://www.rubygeocoder.com/

https://github.com/alexreisner/geocoder(查看自述文件)

于 2012-07-13T05:09:21.100 回答
2

你可以定义你想要搜索的距离,记住传递单位:

@locations = Location.near([current_user.latitude, current_user.longitude], 50, units: :km)
于 2014-12-17T19:31:06.057 回答