当我在博客中添加评论时,评论会显示在每个博客上,而不是发布的博客上



我试图在博客文章中添加评论,并让它们与博客显示在同一页面上。发布在该博客上的评论会显示在每个博客上这是我在博客控制器中的代码

def index
@blogs = Blog.all
end
def show
@blog = Blog.find(params[:id])
@blogs = Blog.all
@comment = @blog.comments.build
end
def new
@blog = Blog.new
end
def create
@blog = Blog.new(blog_params)
@blog.user = current_user
if @blog.save
redirect_to blogs_path
else
render :new
end
end

注释控制器

def new
@comment = Comment.new
end
def create
@blog = Blog.find(params[:blog_id])
@comment = Comment.new(comment_params)
@comment.blog = @blog
@comment.user = current_user
@comment.save
redirect_to blog_path(@blog)
end
def show
@comments = Comment.new
end

views/blogs/show.html.erb

<% @blogs.each do |blog| %>
<div class="comment-box">
<% blog.comments.each do |c| %>
<p><%= c.body %></p>

您在博客控制器中的显示方法应该如下:

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

此外,您可以如下重构comments_controller.rb

def create
@blog = Blog.find(params[:blog_id])
@comments = @blog.comments.build(comment_params.merge({user: current_user}))
@comments.save
redirect_to blog_path(@blog)
end

希望这对你有帮助。

最新更新