2

私はRailsとRubyを初めて使用しますが、実際にはこれが私の最初のWeb言語です。これは私の最初のプロジェクトではありませんが、これまでで最大のプロジェクトであり、特定のページ(「ホームページ」ページ)で問題が発生しています。

エラーは次のとおりです。

NoMethodError in Home#index undefined method `avatar' for nil:NilClass

抽出されたソース(1行目あたり):

1: <%= image_tag current_user.avatar.url(:thumb) %>
2: <ul>
3:   <li><b>Name:</b><%= current_user.name %></li>
4:   <li><b>Username:</b><%= current_user.username %></li>

だから私の属性が好きではありません:(この状況で私は何をすべきですか?最初にどこを見るべきですか?これはコントローラーの問題ですか?

4

2 に答える 2

3

問題は、current_userを返すことnilです。

エラーを見てください

NoMethodError in Home#index undefined method `avatar' for nil:NilClass

avatarRubyは、オブジェクトに対してインスタンスメソッドを実行しようとしていると言っていnilます。avatarコードを見た後、の戻り値を呼び出していることがわかるはずです。これにより、ユーザーの代わりに戻り値をcurrent_user推測できます。current_usernil

コメントによると:

これを解決するには、最初にが存在するかどうかを判断する必要がありますcurrent_user。次に、その場合にのみ、ユーザーavatarまたはユーザーの他の属性を表示しようとしますか(nameusername...)

ビューのロジックが気に入らない人もいますが、私はこの慣習に従う傾向があります。

これを回避するには、次の方法があります。ロジックを含むビューヘルパーを作成します。このヘルパーは、ユーザーに関するデータを表示/返す場合としない場合があります。

の線に沿った何かif current_user ...

于 2012-09-20T14:42:55.160 に答える
1

'current_user'のアバターを取得しようとしています。current_userが誰であるか、または何であるかがわからないため、システムは文句を言っています。

current_userオブジェクトはnilです。current_user ...を設定している場所で問題を引き起こしているコード(おそらくアプリケーションまたはセッションヘルパーを形成している)は、問題の根本を見つける可能性が最も高い場所です。

于 2012-09-20T14:49:41.987 に答える