정의되지 않은 메서드 avatar?' for nil:NilClass undefined method
이름 'NilClass정의되지 않은 방법, 아바타 이름 : 무기 호에 대한 NilClass
안녕, 내 부분에 다음과 같은 오류가 발생하고 있습니다. 둘 다 나열된 이유는 첫 번째 오류 메시지가 원인 인 행을 주석 처리 한 후에 문제가 "아바타"또는 "이름"이 아닌 다른 것으로 생각하게하는 두 번째 오류가 발생하기 때문입니다. 무엇을 모르겠다. 레일 콘솔에서 사용자의 이름과 전화를 할 수 있습니다. 또한 문제가된다면 Faker를 사용하여 데이터베이스를 파종했습니다. 여기에 부분이 있습니다.
<%= content_tag :div, class: 'media', id: "comment-#{comment.id}" do %>
<%= link_to '#', class: 'pull-left' do %>
<%= image_tag(comment.user.avatar.small.url) if comment.user.avatar? %>
<% end %>
<div class="media-body">
<small>
<%= comment.user.name %> commented <%= time_ago_in_words(comment.created_at) %> ago
<% if policy(comment).destroy? %>
| <%= link_to "Delete", [@topic, @post, comment], method: :delete %>
<% end %>
</small>
<p><%= comment.body %></p>
</div>
<% end %>
또한 렌더링을 참조하십시오.
<div class="col-md-4">
<% if policy(Comment.new).create? %>
<h4>Leave a comment</h4>
<br/>
<%= render partial: 'comments/comment', locals: { topic: @topic, post: @post, comment: @comment } %>
<% end %>
</div>
은 아래 내 사용자 모델과 comments_controller
class UsersController < ApplicationController
before_filter :authenticate_user!
def update
if current_user.update_attributes(user_params)
flash[:notice] = "User information updated"
redirect_to edit_user_registration_path(current_user)
else
render "devise/registrations/edit"
end
end
private
def user_params
params.require(:user).permit(:name, :avatar)
end
end
Comments_controller
def create
@topic = Topic.find(params[:topic_id])
@post = @topic.posts.find(params[:post_id])
@comments = @post.comments
@comment = current_user.comments.build(comment_params)
@comment.post = @post
@new_comment = Comment.new
authorize @comment
if @comment.save
redirect_to [@topic, @post], notice: "Comment was submitted successfully."
else
flash[:error] = "There was an error submitting the comment. Please try again."
end
end
이미 데이터베이스를 다시 설정했지만, 아무 소용에 있습니다. 문제가 무엇인지 파악하십시오. 당신의 도움을 주셔서 감사합니다.
내 사용자 및 댓글 모델은 아래를 참조하십시오.
class Comment < ActiveRecord::Base
belongs_to :post
belongs_to :user
default_scope { order('created_at DESC') }
validates :body, length: { minimum: 5 }, presence: true
after_create :send_favorite_emails
private
def send_favorite_emails
self.post.favorites.each do |favorite|
if favorite.user_id != self.user_id && favorite.user.email_favorites?
FavoriteMailer.new_comment(favorite.user, self.post, self).deliver
end
end
end
end
사용자 모델
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable, :confirmable
has_many :posts
has_many :comments
has_many :votes, dependent: :destroy
has_many :favorites, dependent: :destroy
mount_uploader :avatar, AvatarUploader
def role?(base_role)
role == base_role.to_s
end
def favorited(post)
self.favorites.where(post_id: post.id).first
end
def voted(post)
self.votes.where(post_id: post.id).first
end
private
end
'전무해야한다 렌더링 inside –
'User'와'Comment' 모델을 보여줄 수 있습니까? –
댓글에 댓글이 설정되어 있지 않습니다. 왜? 그게 어딘가에있다. current_user.comments.build (comment_params) 주변은 내가보고있는 곳입니다. –