我目前正在使用基本的Rails指南来创建博客,但我在删除与帖子相关联的comments
时遇到了问题。
这是我的评论控制器:
class CommentsController < ApplicationController
def create
@post = Post.find(params[:post_id])
@comment = @post.comments.create(params[:comment].permit(:commenter, :body))
redirect_to post_path(@post)
end
def destroy
@post = Post.find params[:post_id]
@comment = @post.comments.find params[:id]
@comment.destroy
redirect_to post_path(@post)
end
end
在我的观点中,destroy
行动根本没有触发。所以我甚至无法使用控制台作为解决问题的工具。
以下是comments
的部分观点:
h2 Comments
- @post.comments.each do |comment|
p
strong Commenter:
= comment.commenter
p
strong Comment:
= comment.body
p = link_to "Delete Comment", [comment.post, comment],
method: :delete,
data: { confirm: 'Are you sure?' }
为删除链接生成html:
<a data-confirm="Are you sure?" data-method="delete" href="/posts/9/comments/2"
rel="nofollow">Delete Comment</a>
即使是我对帖子的摧毁行动也没有提出任何要求,这让我觉得当我搬到偏见时可能会出现问题。
在控制台内部我仍然可以通过查找post_id
的帖子来删除评论,然后找到与帖子相关的评论并销毁它。出于某种原因,我无法弄清楚为什么视图链接不会做任何事情。
答案 0 :(得分:4)
首先,请务必在模板中放置正确的缩进,这可能会弄乱一些事情。带锚链接的最后一段似乎输入错误:
h2 Comments
- @post.comments.each do |comment|
p
strong Commenter:
= comment.commenter
p
strong Comment:
= comment.body
p
= link_to "Delete Comment", [comment.post, comment], method: :delete, data: { confirm: 'Are you sure?' }
然后,您应该查看rails服务器日志以查看单击链接时发生的情况。如果HTML链接看起来很好,则必须调用服务器,并提供调试调用所需的所有信息。
答案 1 :(得分:0)
最后,您循环这些注释并销毁它们。
@post = Post.find(params[:id])
@comment = @post.comments.where(post_id: @post.id)
@comment.each do |comment|
comment.destroy
end