Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/68.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 Geocoder gem未显示正确的距离用户远离地址_Ruby On Rails_Activerecord_Geocoding_Geocode_Rails Geocoder - Fatal编程技术网

Ruby on rails Geocoder gem未显示正确的距离用户远离地址

Ruby on rails Geocoder gem未显示正确的距离用户远离地址,ruby-on-rails,activerecord,geocoding,geocode,rails-geocoder,Ruby On Rails,Activerecord,Geocoding,Geocode,Rails Geocoder,我正在使用geocoder gem在我的rails应用程序中实现地理定位。我正在按地址进行地理定位。用户根据地图上的位置正确显示,但距离不正确。当搜索后显示用户索引时,用户都被设置为250.00到253英里,即使他们都应该距离我作为用户保存的地址1或3英里。为什么会出现这种情况,以及我如何解决?另外,当我试图搜索附近的用户时,所有用户都被抓获,我在索引控制器中声明了100英里,如果我将用户放在1000英里之外,他们也被抓获。您将如何设置它,以便只接100英里半径内的用户?任何帮助都将不胜感激,谢

我正在使用geocoder gem在我的rails应用程序中实现地理定位。我正在按地址进行地理定位。用户根据地图上的位置正确显示,但距离不正确。当搜索后显示用户索引时,用户都被设置为250.00到253英里,即使他们都应该距离我作为用户保存的地址1或3英里。为什么会出现这种情况,以及我如何解决?另外,当我试图搜索附近的用户时,所有用户都被抓获,我在索引控制器中声明了100英里,如果我将用户放在1000英里之外,他们也被抓获。您将如何设置它,以便只接100英里半径内的用户?任何帮助都将不胜感激,谢谢

schema.rb

  create_table "users", force: true do |t|
    t.string   "address"
    t.string   "city"
    t.string   "state_province"
    t.float    "latitude"
    t.float    "longitude"
    t.string   "country"
user.rb

geocoded_by :full_address
after_validation :geocode

def full_address
    "#{self.address}, #{self.city}, #{self.state_province}, #{self.country}"
end
用户_controller.rb

  def index
    if  params[:city_search]
      @users = User.near(params[:city_search],100)
      @users = User.all_except(current_user)
index.html.erb

<% if @users.count > 1 %>

     <%= "is #{user.distance_to(params[:city_search]).round(2)} miles away." %> 

<% end %>


<%= javascript_tag do %>

<% if params[:city_search] != "" %>

  var latitude = <%= @users.first.latitude %>;
  var longitude = <%= @users.first.longitude %>;
  var showMarker = false;

  var coords = <%= raw @users.map{|user| {latitude: user.latitude, longitude: user.longitude, id: user.id}}.to_json %>; 

<% end %> 

<% end %>
1%>
var纬度=;
变量经度=;
var-showMarker=false;
var-coords=;

您确定方法
distance\u to
返回以英里为单位的值吗?是的,它显示253英里。但是,当我键入User时,我可以在我的控制台中获得正确的数字。nearbys(10)显示用户,并在每个用户的距离列下提供正确的距离,例如,距离:3英里或距离:8英里。我只是想说明,在我的视图中,您在上面的代码中使用了
User.near
。不是
User.nearbys
。此外,在调用
distance\u to
之外的字符串中键入了miles。gem的文档是否说该方法返回英里数?是的,User.nearbys在我的代码中不起作用。默认情况下,gems文档返回英里数。