Я знаю, что этот вопрос задавали много раз раньше, но я проверил ответы, и он не работает для меня, как должен. Мне нужно подделать 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
Но это не работает, потому что, когда я делаю запрос в приложении searchsController ap request.location, он продолжает давать мне объект с IP-адресом «127.0.0.1». и долгота и широта = 0 очевидно. Но если я делаю request.remote_ip, консоль дает мне правильный IP-адрес внутри строки «12.34.567.890». Я не понимаю, почему.
Это код контроллера/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
Вот что выдает мне консоль, когда я выполняю поиск
"12.34.567.890" (Правильный ip) #"127.0.0.1", "город"=>"", "код_региона"=>"", "имя_региона"=>"", "код города"=>"", " почтовый индекс"=>"", "широта"=>"0", "долгота"=>"0", "название_страны"=>"Зарезервировано", "код_страны"=>"RD"}, @cache_hit=nil> Выполнено 500 Внутренняя ошибка сервера за 140 мс
ActionDispatch::Request
.def location '81.38.174.158' end
- person Amit Sharma   schedule 16.04.2015