2017-01-06 10 views
0

방금 ​​설치 한 지오 코더를 설치하여 수명이 다할 때까지 기다리십시오. 사용자가 로그인하여 프로필 방문 페이지를 통해 자신의 IP에 데이터를 표시하고 싶습니다.dev env에서 하드 코딩 된 IP를 감지하고 데이터를 표시하도록 Geocoder를 가져옴

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 

뷰 : 다음 intializers에

<%= @location.data %> 

내가 오류가 undefined method 'data' for nil:NilClass

/내가 dev에 환경에있어 때문에, 여기에 임시 해결책에 내 시도이다 geocoder.rb

Geocoder.configure(
    :timeout => 30 
) 

답변

0

당신은 할당하는 인스턴스 변수 @request@location SessionsController의 생성 작업에 있지만 이러한 변수의 수명은 그 요청 일뿐입니다. 컨트롤러 조치가 완료되면 클라이언트의 브라우저를 ProfilesController으로 재지 정하고 있으므로이 두 할당을 ProfilesController#show으로 이동해야합니다. 그러면 작동합니다.

편집 : 사용자 프로필에 대해 SessionsController show action을 사용한다고 가정하기 때문에이 두 문장을 해당 조치 방법으로 이동하면 트릭을 수행해야합니다. :-)

+0

프로파일 컨트롤러가 없습니다. 나는 사용자와 세션을 가지고있다. 나쁜 디자인? – sivanes

+0

그러면'profile_path'는 어디에 매핑됩니까? 질문에 경로를 추가 할 수 있습니까? – soupdog

+0

'user_path (user)'라고 말하고 싶습니까? 그렇다면'ProfilesController'를'UsersController'로 바꿉니다. (대답이 맞는다면) – soupdog