我创建了一个测试博客应用,其中包含各种帖子和评论。在学习本教程之后,我们创建了几个与之相关的帖子和评论,每个帖子和评论都与一个唯一的ID相关联。
所以我可以调用some_address / posts / 1或/ 2或3,每个都有一个销毁选项。
我删除了ID为1的帖子,现在正如预期的那样,当我尝试使用帖子/ 1时,它会给我一个错误。但这使我的应用程序看起来很丑陋且不一致。
我知道我无法恢复该内容并恢复身份。但有没有我可以用来更新/ 2和/ 3成为/ 1和/ 2?
的代码我是新手,只是测试它。请帮忙
答案 0 :(得分:2)
保存记录后,我不应该更改数据库中的id
。如果你尝试,你将遇到各种各样的问题(破坏的外键和引用)。
如果您不希望在帖子不存在的情况下向用户显示404(未找到)错误页面,您可以尝试将用户重定向到下一个帖子,如下所示:
# in your controller
def show
@post = Post.where(id: params[:id]).first
redirect_to(Post.where('id > ?', params[:id]).first!) unless @post
end
请注意,如果没有比删除的帖子更新的帖子,此代码仍会显示404(未找到)。
答案 1 :(得分:0)
1)首先在你的帖子模型中使用这一行
has_many :comments, dependent: :destroy
2)在非现有页面上使用404错误页面,就像在你的情况下帖子不再存在一样。