2011-11-14 15 views
0

ログインしてログアウトしたときにヘッダーリンクを変更した後は、9.4.3項の最後にあります。テンプレートインクルージョンのMichael Hart's Railsチュートリアル:未定義のローカル変数またはメソッド 'id'

Showing C:/Sites/sample_app/app/views/layouts/_header.html.erb where line #7 raised: 
undefined local variable or method `id' for #<Class:0x5cbd658> 

Extracted source (around line #7): 
4: <nav class="round"> 
5:  <ul> 
6:   <li><%= link_to "Home", root_path %></li> 
7:   <% if signed_in? %> 
8:    <li><%= link_to "Profile", current_user %></li> 
9:   <% end %> 
10:    <li><%= link_to "Help", help_path %></li> 

トレース:アプリ/ビュー/レイアウト/ application.html.erb

Rails.root:C:/サイト/ sample_app私は任意のページをロードしようとすると私は同じエラーを受け取ります アプリケーショントレース|フレームワークトレース|

module SessionsHelper 
def sign_in(user) 
    cookies.permanent.signed[:remember_token] = [user.id, user.salt] 
    current_user = user 
end 

def current_user=(user) 
    @current_user = user 
end 

def current_user 
    @current_user ||= user_from_remember_token 
end 

def signed_in? 
    !current_user.nil? 
end 

def sign_out 
    cookies.delete(:remember_token) 
    current_user = nil 
end 

private 
    def user_from_remember_token 
     User.authenticate_with_salt(*remember_token) 
    end 

    def remember_token 
     cookies.signed[:remember_token] || [nil, nil] 
    end 
end 

私もGithub上にあるもので自分のコードをチェックしているが、私は私が間違っているのかを把握することはできません:フルトレース

app/models/user.rb:47:in `authenticate_with_salt' 
app/helpers/sessions_helper.rb:26:in `user_from_remember_token' 
app/helpers/sessions_helper.rb:12:in `current_user' 
app/helpers/sessions_helper.rb:16:in `signed_in?' 
app/views/layouts/_header.html.erb:7:in `_app_views_layouts__header_html_erb__376347676_36919992' 
app/views/layouts/application.html.erb:10:in `_app_views_layouts_application_html_erb___333215577_32850792' 

は、ここに私のsessions_helper.rbファイルです。

+3

は47 –

+0

がここに私のuser.rbファイルで線を中心に、私達にあなたの 'User'モデルを示してくださいます。http://ペーストビン.com/Jw409Uah – Jarred

答えて

0

コピーペーストエラーが発生した可能性があります。あなたのuser.rbのライン46は、次のようになります。

def self.authenticate_with_salt(id, cookie_salt) 
    user = find_by_id(id) 
    (user && user.salt == cookie_salt) ? user : nil 
end 

、使用するパラメータはUser.authenticateクラスメソッドからです。

(また、タブを使用しないでください、それは悪いRubyのスタイルです。)

+0

あなたが正しいです、私は間違ったパラメータ名をその関数に渡しました。ありがとう! – Jarred

関連する問題