Использование помощника Geokit - PullRequest
4 голосов
/ 21 апреля 2011

Я пытаюсь локализовать своих пользователей по их IP-адресу.Как говорится в документации, метод класса с именем geocode_ip_address был смешан с ActionController::Base.Но должно быть что-то, чего мне не хватает.Должен ли я определить фильтр как этот before_filter :geocode_ip_address, чтобы использовать его?(Я хочу знать местоположение для каждого выполненного запроса).

В документации также говорится о том, что "при первом поиске класс GeoLoc будет сохранен в сеансе как :geo_location", но я, конечно,у меня нет этого ключа внутри хеша сессии.

Что я делаю не так?

Спасибо.

1 Ответ

5 голосов
/ 10 мая 2011

Вам не нужно добавлять before_filter к geocode_ip_address, а просто поместить это в свой контроллер:

class YourController < ApplicationController
  geocode_ip_address

  def action
    if geo = session[:geo_location]
      # geo here is a Geokit::GeoLoc object
    end
  end
end

Обратите внимание, что если геокодирование не удастся geo будет ноль.Если вы работаете в разработке, вы будете пытаться геокодировать 127.0.0.1, поэтому вы захотите установить свой remote_ip в объекте запроса.Я сделал это, добавив это в конец config / environment / development.rb :

class ActionDispatch::Request
  def remote_ip
    "x.x.x.x" # fill in your IP address here
  end
end
...