2017-01-06 1 views
0

ちょうどジオコーダーがインストールされ、ユーザーにログインして、プロファイルのランディングページを取得して、そのIP上にデータを表示する必要があります。私はDEV環境にいるので、ここでは一時的な解決策で私の試みです:ビュー内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 

<%= @location.data %> 

私が手にエラーがintializersでundefined method 'data' for nil:NilClass

です/ geocoder.rb

Geocoder.configure(
    :timeout => 30 
) 

答えて

0

あなたが割り当てているアイバーズ@request@locationあなたのSessionsControllerの作成アクションでは、これらの変数の寿命はその要求です。コントローラーの操作が完了したら、クライアントのブラウザーをProfilesControllerにリダイレクトするので、2つの割り当てをProfilesController#showに移動する必要があります。

EDIT:ユーザーのプロファイルにshowアクションを使用しているとします。その2つのステートメントをそのアクションメソッドに移動すると、そのトリックが実行されます。 :-)

+0

私はプロファイルコントローラを持っていません。私はユーザーとセッションを持っています。デザインが悪いですか? – sivanes

+0

次に 'profile_path'はどこにマップされますか?あなたのルートをあなたの質問に追加するかもしれませんか? – soupdog

+0

'user_path(user)'と言っていましたか?もしそうなら、私の答えで 'ProfilesController'を' UsersController'に置き換えてください(これが当てはまる場合は – soupdog

関連する問題