2012-01-13 12 views
0

사용자 프로필 페이지에 액세스 할 때마다이 오류가 발생합니다.NoMethodError in users # 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

Dave, 사용자가 있습니다. 새 사용자를 만들려고 시도했지만 여전히 동일한 오류가 발생합니다. 어떻게하면이 문제를 해결할 수 있을까요? – Michele

답변

1

오류는 도우미 메서드에 있습니다. @user 객체가 nil이 아닌지 확인하십시오. 그런 다음보기에서 다음과 같이 행 번호 5 변경 :

<%= gravatar_for(@user) %> 

은 사용자가 있습니까이

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

@sannankhalid 제안을 편집했습니다. 이제이 코드 줄 defover gravatar_for (@user)의 마지막 괄호에 구문 오류가 있습니다. 왜 이런 식으로 생각하니? – Michele

+0

'@'기호를 제거하여 줄이 생기면 gravatar_for (사용자)를 지정하고 'user'는 '@user'를 method에 사용하십시오. –