如何使用Rails在本地环境中获取request.location

时间:2015-04-16 16:54:33

标签: ruby-on-rails-4 mongoid rails-geocoder

我知道这个问题之前已被多次询问过,但我已经检查了答案,但它对我来说并不适用。我需要假装我的localhost的ip地址不是' 127.0.0.1'但是' 12.34.567.890'代替。我使用Mongoid搜索,我的最终目标是获得distance_between([me],[spot.location])。所以我需要我的真实坐标。

在互联网上,我找到了这个解决方案:

module ApplicationHelper

 class ActionDispatch::Request 
   def remote_ip
    '81.38.174.158'
   end
 end

end

但它不起作用,因为当我在我的searchController ap request.location中,它一直给我一个ip' 127.0.0.1'的对象。经度和纬度= 0。但是,如果我执行request.remote_ip,控制台会在字符串中为我提供正确的IP' 12.34.567.890'。我不明白为什么。

这是controller / searches_controller.rb的代码

class SearchesController < ApplicationController

  def index
    ap request.remote_ip
    ap request.location
    @user = current_user if current_user
    @spots = Spot.full_text_search(params[:query])
    @spots = Spot.order_by_distance @spots   
  end

end

这是我执行搜索时控制台给我的东西

&#34; 12.34.567.890&#34; (右侧ip)      #&#34; 127.0.0.1&#34;,&#34; city&#34; =&gt;&#34;&#34;,&#34; region_code&#34; =&gt;&#34;&# 34;,&#34; region_name&#34; =&gt;&#34;&#34;,&#34; metrocode&#34; =&gt;&#34;&#34;,&#34;邮政编码&#34 ; =&gt;&#34;&#34;,&#34;纬度&#34; =&gt;&#34; 0&#34;,&#34;经度&#34; =&gt;&#34; 0&# 34;,&#34; country_name&#34; =&gt;&#34;保留&#34;,&#34; country_code&#34; =&gt;&#34; RD&#34;},@ cache_hit = nil&gt; 在140毫秒内完成500内部服务器错误

0 个答案:

没有答案