2012-01-13 21 views
0

ユーザープロファイルページにアクセスしようとするたびに、このエラーが発生します。ユーザーのNoMethodError#show

ActionView::Template::Error (undefined method `email' for nil:NilClass): 
2: <tr> 
3:  <td class="main"> 
4:  <h1> 
5:   <%= gravatar_for @user %> 
6:   <%= @user.name %> 
7:  </h1> 
8:  </td> 

app/helpers/users_helper.rb:4:in `gravatar_for' 
app/views/users/show.html.erb:5:in `_app_views_users_show_html_erb__222181804_33777120' 

以下は、私のusers.controller.rbファイルの外観です。

def show 
@user = User.find(params[:id]) 
@microposts = @user.microposts.paginate(:page => params[:page]) 
@title = @user.name 

さらに参照するには、私のshow.html.erbファイルのコピーがあります。

<table class="profile" summary="Profile information"> 
    <tr> 
    <td class="main"> 
     <h1> 
     <%= gravatar_for @user %> 
     <%= @user.name %> 
     </h1> 
    </td> 
    <td class="sidebar round"> 
     <strong>Name</strong> <%= @user.name %><br /> 
     <strong>URL</strong> <%= link_to user_path(@user), @user %> 
    </td> 
    </tr> 
</table> 

users_helper.rbファイルも提供されています。

module UsersHelper 

    def gravatar_for(user, options = { :size => 50 }) 
    gravatar_image_tag(user.email.downcase, :alt => h(user.name), 
              :class => 'gravatar', 
              :gravatar => options) 
    end 
end 
+0

のようなあなたのusers_helper#のgravatar_for方法を定義するユーザーはありますか? –

+0

明らかに、あなたの '@ user'は' nil'です。 –

+0

デイブ、ユーザーがいます。私は新しいユーザーを作成しようとしましたが、私はまだ同じエラーが発生します。どのように私はこれを修正することができる任意のアイデア? – Michele

答えて

1

エラーはヘルパーメソッドにあります。 @userオブジェクトがnilでないことを確認してください。 は、その後、あなたのビューで、次のように行番号5を変更:

<%= gravatar_for(@user) %> 

この

def gravatar_for(@user) 
    .......... 
    @user.email 
    .......... 
    rerurn somthing #if you want 
end 
+0

@sannankhalidを提案した編集を行いました。このコード行の最後の括弧であるdef gravatar_for(@user)に構文エラーがあります。なぜこれを取得しているのですか? – Michele

+0

'@'記号を削除して、その行がdef gravatar_for(user)になり、メソッドの 'user' instedを'user 'にする –