为了学习rails,我开始编写自己的(精简版)reddit。目前,我的评论路线嵌套在我的帖子路线中:
resources :posts do
resources :comments
end
对于我的评论控制器,在索引&创建我有以下
def index
@post = Post.find(params[:post_id])
@comments = @post.comments
if params[:comment].nil?
@comment = Comment.new
@comment.post_id = @post.id
else
@comment = Comment.find([:comment])
end
end
def create
@comment = Comment.new(comment_params)
@comment.user_id = current_user.id
@comment.post_id = params[:post_id]
if @comment.save
#flash
redirect_to post_path(@comment.post)
else
#flash
render 'index'
end
end
哪种方法效果很好,除了最后一部分:渲染
我希望我的评论与其他评论显示在同一页面上(就像reddit一样),所以我不想使用www.example.com/post/4/comment/new路径,而是通过www.example.com/post/4/comments路径。
我知道我可以进行重定向,但是我想保留评论文本,以便用户可以进行更正。有没有办法用渲染正确地执行此操作,而不是将文本放在会话变量中并进行重定向?我理解这是一个边缘案例,但我正在尝试将其作为学习机会。
答案 0 :(得分:0)
您可以将评论传递给索引部分 - 否?
<%= render "index", locals: {comment: @comment} %>
或尝试部分;
<%= render partial: "index", locals: {comment: @comment} %>