Rails 4 + Ruby 2 + Geocoder gem
控制器操作
def index
@your_id = request.ip #here i am getting localhost IP address like "127.0.0.1"
binding.pry
end
我认为在@your_id中,它应该捕获IP地址而不是本地主机IP地址(“127.0.0.1”)。
但是在视图中我需要显示依赖于我的位置示例的城市,如果你在纽约市,那么它应该动态地显示纽约市(通过IP地址)。
知道如何获取city_name和IP地址吗?
答案 0 :(得分:4)
地理编码器gem在请求对象(source)上提供#location
方法,该方法返回纬度和经度的位置结果:
request.location
=> #<Geocoder::Result::Freegeoip:0x007f8ecca5d608
@cache_hit=true, @data= {
"ip"=>"199.21.87.210", "country_code"=>"US",
"country_name"=>"United States", "region_code"=>"CA", "region_name"=>"California", "city"=>"Berkeley", "zipcode"=>"", "latitude"=>37.8716, "longitude"=>-122.2728, "metro_code"=>"807", "areacode"=>"510"
}>
要在浏览器中测试此功能,请尝试使用ngrok公开本地服务器并在控制器中抛出一些调试器语句,以查看request.location
对象的外观。