You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

博客评论显示异常:单篇评论出现在所有博客页面的问题求助

问题解决:博客评论仅显示在对应文章页面

问题描述

尝试为单篇博客添加评论,期望评论仅出现在该博客的详情页,但实际所有博客页面都会显示所有评论。

错误原因分析

1. Blog控制器show方法冗余代码

在show方法中,你额外定义了@blogs = Blog.all,这会把所有博客数据传递到详情页,导致视图错误遍历所有博客。

2. 视图遍历所有博客评论

在show.html.erb中,你遍历了@blogs所有博客并显示每个博客的评论,这就会把所有博客的评论都渲染出来,而非当前打开的博客的评论。

修正方案

1. 修改Blog控制器的show方法

移除多余的@blogs = Blog.all,只保留当前博客和新建评论的实例:

def show
  @blog = Blog.find(params[:id])
  @comment = @blog.comments.build
end

2. 修改views/blogs/show.html.erb代码

直接使用当前博客@blog的评论集合,无需遍历所有博客:

<div class="comment-box">
  <% @blog.comments.each do |c| %>
    <p><%= c.body %></p>
  <% end %>
</div>
<!-- 若有评论提交表单,保留如下结构即可 -->
<%= form_with(model: [@blog, @comment]) do |form| %>
  <%= form.text_area :body %>
  <%= form.submit '提交评论' %>
<% end %>

额外优化:Comments控制器的show方法(可选)

原show方法逻辑错误,若不需要单独的评论详情页,可直接删除该方法;若需要,应修改为获取指定评论:

def show
  @comment = Comment.find(params[:id])
end

内容的提问来源于stack exchange,提问作者sperrin98

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 14:05:31