2011-01-21 28 views
0

Authlogicを動作させてテストするレールアプリでAuthlogicを実装しました。私は私のユーザー・メソッドまたは「インデックス」妙以外の形態(の@current_user変数、noneを使用するusers_controllerで私の方法を変えたので、ユーザーは、Rails + Authlogic @current_userの問題 - 「表示」メソッドが機能しなくなった

しかしなど、ログアウト、ログインすることができます... )仕事が!

は例えば、この「ショー」の方法が動作し、任意のユーザー(注:私は最終的には何らかの形で、現在ログインしているユーザーにこれを制限する):用のユーザー・プロファイルを示して私が続く場合は

def show 
    @user = User.find(params[:id]) 
end 

キャストAuthlogicレールと公式の例に示すように、showメソッド:

def show 
    @user = @current_user 
end 

私はundefined method METHOD for nil:NilClassエラーのすべての種類を取得します。 @current_user変数にはユーザーの情報が含まれていないようです。

私は、アプリケーションのコントローラで定義されているよう@current_userが下にCURRENT_USERメソッドから情報を引っ張っていると仮定します。私は何をしないのです

?私の勘違いは、ユーザーモデルのUserオブジェクトとcurrent_userメソッドの間にマッピングがないことです。どんな助けでも大歓迎です!

ありがとうございます!

〜ダン・

答えて

5

が、それはすべきではないだけ@なし

def show 
    @user = current_user 
end 

+0

正しい私の命を救ったブログのリンクであることを得ましたあなたのための方法。 –

+0

私は定義済みの変数ではなくメソッドを呼び出すことがわかっています。オンラインのサンプルコードの多くが@user = @current_userに設定されているので、少し混乱しました。あなたの助けをもう一度ありがとう!これが私がStackOverflowが好きな理由です。 – thoughtpunch

1
def 
if @current_user 
@user = @current_user 
else 
@user = User.find(params[:id]) 
end 
end 

ちょっと試してみてください。

+0

これは完全な答えではありませんでしたが、私はこのアイデアを使用して、ログインしていないユーザーにプロファイルを見せるようにしました。ありがとう! – thoughtpunch

2

current_userはauthlogicに付属しているヘルパーであるため、 '@'なしで使用する必要があります。 通常、コントローラからビューに渡すために@sothingを作成するので、アクションメソッドで準備したものにアクセスします。

+0

これは意味があります...Githubのサンプルコードでそのように設定したのはなぜですか? – thoughtpunch

2

私はauthlogicとrails 3と同様の問題がありました。これは、プロダクションサーバー上にあったApache HTTP認証が原因でした。 と私は工夫が `current_user`を提供し、

allow_http_basic_auth false 

(モデル)私のuser_session.rbに以下の行を追加することで、固定これはあーhttp://www.christopherirish.com/2011/08/12/rails-3-authlogic-sessions-not-persisting-in-production/comment-page-1/#comment-181

+0

問題は何ですか?あなたは明確にすることができますか? 'allow_http_basic_auth false 'は何をしますか? – Sazzad

関連する問題