问题描述
<head>
<title><%[email protected]%></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>
这总是渲染一个额外的空卡(或者我在那里使用的任何东西都空了),我也不知道为什么。如果我没有在引导程序的最右边一列中但在中间没有它,它就不会那样做?我不知道这里出了什么问题,大概两个小时后,这是我的最后选择。
编辑:问题出在渲染形式中,我在其中有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 %>
然后,只有当comment
存在时,卡片div才会生成,并删除该空卡片。