Ruby on rails 如何使用Geocoder从城市列表中自动显示用户的城市
我正在尝试实现一种功能,它获取访问者的IP地址,并在站点的标题中返回城市名称 但是,该城市需要从人口预先确定的城市列表中删除。我将用美国主要城市的列表来填充该列表 我的问题分为三个部分: 填充主要城市静态列表的最佳方式是什么?是否通过迁移? 如何使用Geocoder仅返回预填充列表中的城市?一些城市将是较小的城市,我想根据它们与这些城市的接近程度将它们合并成较大的城市 如何在标题中将城市显示为下拉列表,并根据用户的IP将默认设置为用户的城市,但也允许用户从该下拉列表中选择其他城市? 目前,我正在使用专用的Location.rb模型和locations_controller.rb控制器 在我的模型中:Ruby on rails 如何使用Geocoder从城市列表中自动显示用户的城市,ruby-on-rails,ruby,geocoding,Ruby On Rails,Ruby,Geocoding,我正在尝试实现一种功能,它获取访问者的IP地址,并在站点的标题中返回城市名称 但是,该城市需要从人口预先确定的城市列表中删除。我将用美国主要城市的列表来填充该列表 我的问题分为三个部分: 填充主要城市静态列表的最佳方式是什么?是否通过迁移? 如何使用Geocoder仅返回预填充列表中的城市?一些城市将是较小的城市,我想根据它们与这些城市的接近程度将它们合并成较大的城市 如何在标题中将城市显示为下拉列表,并根据用户的IP将默认设置为用户的城市,但也允许用户从该下拉列表中选择其他城市? 目前,我正在
reverse_geocoded_by :lat, :lon do |obj,results|
if geo = results.first
obj.city = geo.city
end
end
after_validation :reverse_geocode
在我的控制器中:
def index
@ip = request.remote_ip
@locations = Location.all
@city = result.city
end
在我的标题部分:
<%= collection_select(@cities) %>
我是Rails和GeoCoder gem的新手,所以我不确定在代码和结构方面是否做得正确。任何输入都会有帮助。1迁移不是填充任何数据的地方,您可以在通常运行的文件db/seeds.rb中添加数据填充:rake db:create;rake-db:迁移;rake db:种子。如果您不喜欢db/seeds.rb,可以添加一个定制的Rake任务 2 Geocoder没有现成的功能,您可以做的是将主要城市及其纬度和经度存储在表中,然后执行地理ip查询以检查用户纬度/经度,并使用Geocoder搜索主要城市更接近用户的模型。靠近用户lat/long 三,
def index
@ip = request.remote_ip
@locations = Location.all
@lat, @lng = write_code_to_get_user_lat_and_lng
@city = Location.near([@lat, @lng], maximum_radius_in_miles).first
end
<%= select_tag('user_city', options_for_select(@locations.collect {|l| [l.name. l.id]}, @city.id) %>