让 Geocoder 检测开发环境中的硬编码 ip 并显示数据

getting Geocoder to detect hardcoded ip in dev env and display data

刚刚安装了 Geocoder 并试图让它显示出生命迹象。我希望用户登录并让个人资料登录页面显示其 ip 上的数据。由于我在开发环境中,这是我尝试的临时解决方案:

class SessionsController 

  def create
    user = User.authenticate(params[:username_or_email], params[:password])
    if user
      session[:user_id] = user.id
      redirect_to profile_path, :notice => "Logged in!"
      @request = Rack::Request.new({'REMOTE_ADDR' => '107.128.188.218'})
      @location = @request.location
    #blah blah blah
  end

在视图中:

<%= @location.data %>

我得到的错误是 undefined method 'data' for nil:NilClass

在 intializers/geocoder.rb

Geocoder.configure(
  :timeout => 30
)

您在 SessionsController 的创建操作中分配了 ivars @request@location,但这些变量的生命周期只是那个请求。控制器操作完成后,您将客户端的浏览器重定向到您的 ProfilesController,因此您需要将这两个分配移动到 ProfilesController#show,然后它应该可以工作。

编辑:由于您说您正在使用 SessionsController 显示用户个人资料的操作,将这两个语句移动到该操作方法应该可以解决问题。 :-)