是的,我已经检查了here。它没有用。
Rails: 5.0.2 Ruby: 2.4.0
我有一个评论集合,每次调用它时,它会渲染一次太多而空白评论总是出现在其他人之下,当没有评论存在时,一个空评论仍会呈现。
以下是代码:
查看
<h2>Add a comment:</h2>
<%= render 'comments/form' %>
<h2>Comments</h2>
<%= render @video.comments || "There are no comments yet." %>
表单部分
<%= form_for([@video, @video.comments.new]) do |f| %>
<p>
<%= f.label :name %><br>
<%= f.text_field :commenter %>
</p>
<p>
<%= f.label :body %><br>
<%= f.text_area :body %>
</p>
<p>
<%= f.submit %>
</p>
<% end %>
评论部分
<p>
<strong>Name:</strong>
<%= comment.commenter %>
</p>
<p>
<strong>Comment:</strong>
<%= comment.body %>
</p>
<p>
<%= link_to 'Destroy Comment', [comment.video, comment],
method: :delete,
data: { confirm: 'Are you sure?' } %>
</p>
控制器
def create
@video = Video.find(params[:video_id])
@comment = @video.comments.create(comment_params)
redirect_to video_path(@video)
end
def destroy
@video = Video.find(params[:video_id])
@comment = @video.comments.find(params[:id])
@comment.destroy
redirect_to video_path(@video)
end
private
def comment_params
params.require(:comment).permit(:commenter, :body)
end
有谁知道为什么这会让部分时间延长?
答案 0 :(得分:1)
您可以尝试在评论关联中调用.scope
:
<%= render @video.comments.scope || "There are no comments yet." %>