Зацикливание объекта, возвращающего нулевой экземпляр? - PullRequest
0 голосов
/ 07 октября 2018

Я делаю цикл под моей моделью комментариев, чтобы отобразить все комментарии к сообщениям

 %h2 Comments
 - @post.comments.each do |comment|
     %p
       %strong Comment:
     = comment.text
     = link_to 'Destroy Comment', [comment.post, comment],
           method: :delete,
           data: { confirm: 'Are you sure?' }

, которые возвращают мне эти Nil comment in the end

Как вы можете видеть тамявляется одним пустым объектом, если я иду к консоли rails и проверяю все комментарии, которые есть в этом сообщении, он говорит мне, что у него есть только два комментария «Комментарий 1» и «комментарий2». Любые идеи, почему создается экземпляр объекта nil и отображается какесли это существует?Вот мои действия контроллера создания комментариев

def create
  @post = Post.find_by slug: params[:post_slug]
  @comment = @post.comments.create(comment_params)
  @comment.user_id = current_user.id
  if @comment.save
    redirect_to post_path(@post)
  else
    flash.now[:danger] = 'Error'
  end
end

Если пост не имеет комментариев, он не отображает ни одного комментария, это просто происходит, если у меня есть комментарии в этом посте Показать действие для PostController

 def show
  @post = Post.find_by slug: params[:slug]
  redirect_to posts_path unless @post.present?
  @post.update_visit_count if @post.present?
 end

Ответы [ 2 ]

0 голосов
/ 08 октября 2018

Похоже на проблему с шаблоном.В HAML имеет значение отступ.Содержимое цикла должно иметь отступ на 2 пробела больше, чем команда цикла.Но, на ваш взгляд, строка %p смещена на 4 символа относительно предыдущего, а не на 2, как и должно быть.

Не могли бы вы заменить этот код шаблона следующим:

%h2 Comments
- @post.comments.each do |comment|
  %p
    %strong Comment:
  = comment.text
  = link_to 'Destroy Comment', [comment.post, comment], method: :delete, data: { confirm: 'Are you sure?' }

и попробовать еще раз?

0 голосов
/ 07 октября 2018

Я думаю, что вы упустили пункт. Каждый пост имеет комментарии, поэтому сначала вкладывайте каждый цикл, например, @posts.each do |post| post.each do |comment| .... end end

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...