如何偵測IP位置來自哪個國家?

今天遇到一個問題,網站上內嵌youtube影片很好,但是中國用戶可就不這麼認為(文天祥:youtube是什麼?可以吃嗎?)

解決此問題的其中一個方法是,針對中國的用戶將他們導向優酷網(中國的視頻服務,有如中國版本的youtube),這邊的關鍵問題就是,該怎麼知道用戶來自中國呢?

Geocoder

這個套件能偵測IP所對應的國家,而且超容易使用。上述問題只需一行code就搞定,不需要動到model或資料庫。

Let's Start!

gem install geocoder

在Gemfile裡面加入
gem geocoder
Then,
bundle install

然後在Controller裡

if request.location.country_code == 'CN' # China
  @video_link = ... # to yoku
else
  @video_link = ... # to youtube
end

打完收工...!!

如果想更了解Geocoder的話,官方API很有用,如果想跟他混熟的話,打開rails console
Geocoder # Module
Geocoder.search("China") # Array
Geocoder.search("China")[0].data # Hash
Geocoder.search("China")[0].data["address_components"][0]['short_name'] # CN, = request.location.country_code

Comments

comments powered by Disqus