/ / Ruby on Rails: Post.comments.last erhält ID-Fehler - Ruby-on-Rails, Ruby

Ruby on Rails: Post.comments.last erhält ID-Fehler - Ruby-on-Rails, Ruby

Ich kann das anscheinend nicht klären. Bitte helfen Sie mir. Ich habe ein Post- und Kommentarmodell. Mein Postmodell sieht folgendermaßen aus:

post.rb
has_many :comments

Dies ist das Kommentarmodell:

comment.rb
belongs_to :comment

In meiner Post-Index-Ansicht habe ich diesen Code geschrieben:

index.html.erb
<tbody>
<% @Posts.each do |post| %>
<tr>
<td><%= post.comments.last %></td>
</tr>
<% end %>
</tbody>

Dies scheint zu funktionieren und gibt mir diesen Wert:

#<Comment:0x007f6b34bfca88>

aber wenn ich zum Code dazu wechsle:

<tbody>
<% @Posts.each do |post| %>
<tr>
<td><%= post.comments.last.id %></td>
</tr>
<% end %>
</tbody>

Es gibt mir diesen Fehler

undefined method `id" for nil:NilClass

Was ich erreichen wollte, war, die ID des letzten Kommentars aus meiner Sicht zu erhalten. Wenn Sie eine Antwort auf dieses Problem haben, lassen Sie es mich wissen. Vielen Dank!

Antworten:

4 für die Antwort № 1

Es sieht so aus, als hätten einige Beiträge keine Kommentare - und deshalb post.comments.last kehrt zurück nil. In Ihrem ursprünglichen Code führte dies nur zu einer leeren Zelle in Ihrer Tabelle.

Versuche dies:

<tbody>
<% @Posts.each do |post| %>
<tr>
<td><%= post.comments.last.try(:id) %></td>
</tr>
<% end %>
</tbody>

Das wird ein zurückgeben id wo es Kommentare gibt, und eine leere Zelle, wo es keine Kommentare gibt