Ich arbeite seit vielen Stunden daran und habe mehrere Male (von einem Backup-Punkt aus) versucht, das Problem zu lösen.Benutzerzuordnung hinzugefügt, aber immer noch "undefinierte Methode"
Ich versuche, Kommentare zu den Beiträgen hinzuzufügen. Kommentare funktionieren gut, es werden der Benutzername und der Avatar angezeigt, die nicht funktionieren. Hier ist, was ich Schritt für Schritt gemacht habe.
1) rails g model Comment body:text user:references post:references
2) überprüft, dass das Modell I
class Comment < ApplicationRecord
belongs_to :user
belongs_to :post
end
3) rake db:migrate
4) hinzugefügt has_many :comments, dependent: :destroy
sowohl user.rb und post.rb
5) Hinzugefügt resources :comments
zu meinen Routen.
resources :posts do
resources :comments
member do
post '/like' => 'posts#like'
end
end
6) generierten Kommentaren Controller rails g controller comments
7) den Bemerkungen zu dem Controller Kommentare Altered:
class CommentsController < ApplicationController
def create
@post = Post.find(params[:post_id])
@comment = @post.comments.create(params[:comment].permit(:body))
@comment.user = current_user
if @comment.save
redirect_to post_path(@post)
else
# something else
end
end
end
8) schuf zwei partials "_comment.html.erb" und „_form.html .erb "in Kommentaren" Ordner anzeigen.
"_comment.html.erb"
<h2><%= @comment.user.name %></h2>
<p><%= comment.body %></p>
"_form.html.erb"
<%= form_for([@post, @post.comments.build]) do |f| %>
<p>
<%= f.text_field :body %>
</p>
<p>
<%= f.submit %>
</p>
<% end %>
9) Hinzugefügt Kommentare Beiträge anzeigen Seite
<h4><%= @post.comments.count %> comments</h4>
<%= render @post.comments %>
<h2>Add a comment</h2>
<%= render "comments/form"%>
10) Neustart des Servers
11) Versucht zu einen Kommentar schreiben und bekam folgende Fehlermeldung:
NoMethodError in Posts#show
undefined method `user' for nil:NilClass
<h2><%= @comment.user.name %></h2> #THIS LINE IS THE ERROR