我试图在博客文章中添加评论,并让它们与博客显示在同一页面上。发布在该博客上的评论会显示在每个博客上这是我在博客控制器中的代码
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
希望这对你有帮助。