2017-01-06 1 views
0

Просто установлен Geocoder и пытается заставить его показать признаки жизни. Я хочу, чтобы пользователь входил в систему и имел целевую страницу профиля для отображения данных на своем ip. Так как я нахожусь в среде Dev, вот моя попытка временного решения:Получение Geocoder для обнаружения жестко закодированного ip в dev env и отображения данных

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

в инициализаторы/geocoder.rb

Geocoder.configure(
    :timeout => 30 
) 

ответ

0

Вы назначаете Ивар @request и @location в создании действия вашего SessionController, но время жизни этих переменных является именно этим запросом. После завершения действия контроллера вы перенаправляете браузер клиента на ProfilesController, поэтому вам нужно переместить эти два назначения в ProfilesController#show, тогда он должен работать.

EDIT: Поскольку вы говорите, что используете действие шоу SessionsController для профиля пользователя, перемещение этих двух операторов в этот метод действия должно сделать трюк. :-)

+0

У меня нет контроллера профилей. У меня есть пользователи и сеансы. Плохой дизайн? – sivanes

+0

Тогда, где находится карта 'profile_path'? Может быть, добавить свои маршруты к вашему вопросу? – soupdog

+0

Вы имели в виду 'user_path (user)'? Если это так, то просто замените 'ProfilesController' на' UserController' в моем ответе (что я буду делать, если это так) – soupdog

Смежные вопросы