2014-01-06 44 views
0

軌道4 +紅寶石2 +地理編碼寶石如何從地理編碼寶石城名和遠程IP地址?

控制器動作

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地址?

回答

4

地址解析器寶石提供請求對象上的#location方法(source),它返回與緯度和經度的位置的結果:

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對象是什麼樣子。