渲染模型渲染一个空对象

Rendering models renders an empty object

<head>
   <title><%=@article.title%></title>
</head>
<div class="row">
   <div class="col"></div>
   <div class="col-6">
      <h1 class="d-flex justify-content-center"><%= @article.title %></h1>
      <p><%= @article.text %></p>
      <div class= "d-flex justify-content-center">
         <%= render 'comments/form'%>
      </div>
   </div>
   <div class="col">
      <%= render  @article.comments %>
   </div>
</div>
<div class="card">
   <div class="card-header"><%= if(!comment.nil?) then comment.commenter end %></div>
   <div class="card-body"><%= if(!comment.nil?) then  comment.body end %></div>
</div>

这总是呈现一张额外的空卡片(或者清空我在那里使用的任何东西),我不知道为什么。它不会那样做,如果我没有在 bootstrap 的最右边的列中而是在中间???我不知道这里出了什么问题,大约 2 小时后,这是我最后的选择。

编辑:问题出在渲染形式上,我在其中有 comment.build,这显然在 RAM 中创建了一个空对象,由 rails 渲染。我将其更改为: <%= form_with model: [@article, Comment], local:true do |form| %>

不确定这是否是您要问的内容,但卡片 div 将始终呈现您是否有评论,如果不存在则创建一张空卡片。

改变这个:

<div class="card">
  <div class="card-header"><%= if(!comment.nil?) then comment.commenter end %></div>
  <div class="card-body"><%= if(!comment.nil?) then  comment.body end %></div>
</div>

为此:

<% if (!comment.nil?) %>
<div class="card">
  <div class="card-header"><%= comment.commenter %></div>
  <div class="card-body"><%= comment.body %></div>
</div>
<% end %>

然后卡片div只会在comment存在时生成,删除空卡片。