Ich versuche eine einfache Rails App zu erstellen, wo Benutzer Kommentare zu Beiträgen hinterlassen können.undefined Methode `user_name 'für nil: NilClass
Wenn ich einen neuen Beitrag verfasse, stoße ich auf einen undefined method 'user_name' for nil:NilClass
Fehler.
Insbesondere die folgend:
Wie Sie im Bild @ post.comments sehen können, scheint einen einzigen Kommentar mit null Variablen zu enthalten.
mein Kommentar Controller ist wie folgt:
before_action :set_post
def create
@comment = @post.comments.build(comment_params)
@comment.user_id = current_user.id
if @comment.save
flash[:success] = "You commented the hell out of that post!"
redirect_to @post
else
flash[:alert] = "Check the comment form, something went horribly wrong."
redicect_to @post
end
end
#...
private
def comment_params
params.require(:comment).permit(:content)
end
def set_post
@post = Post.find(params[:post_id])
end
Und meine Post-Controller:
before_action :set_post, only: [:show, :edit, :update, :destroy]
before_action :owned_post, only: [:edit, :update, :destroy]
#...
def create
@post = current_user.posts.build(post_params)
if @post.save
flash[:success] = "Your post has been created!"
redirect_to @post
else
flash.now[:alert] = "Your new post couldn't be created! Please check the form."
render :new
end
end
#...
private
def post_params
params.require(:post).permit(:image, :description)
end
def set_post
@post = Post.find(params[:id])
end
Danke für die Hilfe. Entschuldigung für grammatikalische Fehler, ich arbeite schon seit einer Weile daran und bin kein guter Speller wenn ich wach bin.
Sind Sie sicher, dass alle Ihre vorhandenen Datensätze user_id haben? Versuchen Sie dies in der Konsole 'Comment.where (user_id: nil) .count' Entfernen Sie diese Datensätze, wenn es nicht 0 ist. –
Keiner meiner vorhandenen Datensätze hat IDs Comment.all kehrt zu Objekten zurück. – Jones