Это из-за @person.comments.build
.Используя это, мы создадим новые comments
и свяжем их с @person
, переопределяя, таким образом, предыдущие comments
, связанные с @person
.
Итак, я цитирую "Когда я помещаю форму под списком текущих комментариев, работает нормально ".«Но когда я помещаю форму выше списка текущих комментариев, я получаю ошибку undefined method 'name' for nil:NilClass
».
Если вы ставите форму на первое место, @person.comments.build
выполняется перед отображением текущих комментариев, а предыдущие связанные комментарии исчезают.Поэтому, когда вы пытаетесь перебрать каждый комментарий и вызвать comment.user.name
, он выдает ошибку, поскольку comment.user
возвращает ноль.
Убедитесь, что ошибка произошла <h3><%= comment.user.name %> says</h3>