渲染模型渲染一个空对象
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
存在时生成,删除空卡片。
<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
存在时生成,删除空卡片。