いつもお世話になっています。
早速、本題に入ります。
今回の実装では、以下の3つの関連付けをしており、
User has_many Article
User has_many Comment
Article has_many Comment
User→Article→Comment
User→Comment
articles/show.html.erbの所で、記事のコメントを投稿できるようにしています。
そして、articles/show.html.erbには、以下の様にコードを書いています。
<h3>コメント:</h3>//コメントを表示する部分 <% @article.comments.each do |comment| %> <div class="kaiwa"> <figure class="kaiwa-img-left"> <% if comment.user.avatar.url.present? %> <%= image_tag comment.user.avatar_url(:thumb) %> <% end %> <figcaption class="kaiwa-img-description"> <%= comment.user.username %> </figcaption> </figure> <div class="kaiwa-text-right"> <p class="kaiwa-text"> <%= comment.body %> </p> </div> </div> <% end %>//コメントを表示する部分ここまで <h3>作者にコメントを残す</h3> //コメントを投稿する部分 <%= form_for [@article, @article.comments.build] do |f| %> <p><%= f.text_area :body,class:'commentbox' %></p> <%= f.submit 'コメントを投稿する' %> <% end %> </div>
しかし、上記のコードの、コメントを投稿する部分をコメントを表示する部分よりも先に書くと、「undefined method 'avatar' nil class'というエラーになってしまいます。
エラーの該当部分の<%= image_tag comment.user.avatar_url(:thumb) %>を削除して試しても、今度は <%= comment.user.username %>の部分で同じようなエラーが発生します。
(avatarとusernameは、Userのカラム名です)
このようなエラーになる原因や解決策には、どのような事が考えられるでしょうか?
長文になってしまいましたが、よろしくお願致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。