Ich habe ein Buchungssystem, das Kommentare ermöglicht. Ich bin ein Benachrichtigungssystem zu machen und bin immer diese Fehlermeldung:undefined Methode `Benutzer 'für Nil: NilClass
NoMethodError in CommentsController # erstellen nicht definierte Methode `Benutzer für nil: NilClass
Ich denke, dass Benutzer als Post-Attribut definiert ist, und ich Ich rufe die Post an, damit es okay sein sollte. Hier
ist die create-Methode
def create
@comment = Comment.new(comment_params)
@comment.user_id = current_user.id
respond_to do |format|
if @comment.save
create_notification @post
format.html { redirect_to request.referer, notice: 'Comment was successfully created.' }
format.json { render :show, status: :created, location: @comment }
else
format.html { render :new }
format.json { render json: @comment.errors, status: :unprocessable_entity }
end
end
end
Es sollte beachtet werden, dass ich nach einer Anleitung für einen Teil davon, und es hatte orginially die Zeile „create_notification @post, @comment“, aber das erzeugt eine Argumentfehler später. Hier
ist die Methode create_notification, die Fehler in der zweiten Zeile sind
def create_notification(post)
return if post.user.id == current_user.id
Notification.create(user_id: post.user.id,
notified_by_id: current_user.id,
post_id: post.id,
comment_id: comment.id,
notice_type: 'comment')
end
Es beginnt bei der zweiten Zeile, und wenn auf Kommentar, geht es weiter zu den nächsten Zeilen. Hier
ist die App Spur
app/controllers/comments_controller.rb:71:in `create_notification'
app/controllers/comments_controller.rb:33:in `block in create'
app/controllers/comments_controller.rb:31:in `create'
Sie übergeben '@ post' an Ihre' create_notification' Methode, aber wo definieren Sie '@ post'? – mmichael
Nun, ein Kommentar ist mit einem Beitrag verbunden, nicht das gleiche, aber ich nahm an, das wäre genug. Dies ist Teil des neuen Kommentarformulars: <% = f.hidden_field: post_id,: value => @ post.id%>. Sie sind auch in ihren Modellen assoziiert. – MaxLeoTony
Sie wissen, was passiert, wenn Sie davon ausgehen? Ihre Methode erwartet ein Argument. In diesem Fall ein Post-Objekt. Sie übergeben jedoch null, da @ post nicht definiert ist. In diesem Zusammenhang hat Ihr Formular auch nichts damit zu tun, was Sie an Ihre create_notification-Methode übergeben. – mmichael