回复原始主题 - 未定义

你好,
我不太确定具体发生了什么。我正在浏览一些话题并回复一条私信,当我想要提交消息时,弹出了这个窗口:

这是我第一次看到这种情况,我对“undefined”感到困惑。我认为一个更用户友好的提示信息会更好。我不确定这个“undefined”是 bug、已删除的话题还是其他原因。

另外,这个弹窗具体是在什么情况下出现的呢?:thinking:

3 个赞

我猜原来的主题帖被删除了?

我感到困惑。我不知道未定义的部分是关于哪个主题的,而且我相信我是在直接讨论页面上开始我的消息的。

这令人困惑。此外,我在各种 Discourse 论坛上发布过很多消息,但从未出现过这个弹窗(这增加了困惑),因此我也想询问它出现的确切上下文。

至于消息本身,我更喜欢“主题未找到”而不是“未定义”。:slight_smile:

我在 Meta 上也遇到了同样的问题,当时我在两个标签页中打开了编辑器。尝试回复话题时,显示了您截图中弹出的窗口。该弹窗本应显示,但在标题下方,应显示原始话题的标题。看来 Discourse 未能找到原始话题。

当我点击“回复原始话题”选项时,显示了以下错误:

这似乎是一个漏洞。除非有人知道导致该问题的原因,否则我们必须找出复现该问题的步骤。我今天会有机会进行这一操作。

4 个赞

我可以在 https://try.discourse.org/ 上复现该问题。

复现步骤(已在 Linux 系统的 Chrome 浏览器上测试):

  • 浏览某个主题,点击回复按钮以打开编辑器
  • 开始撰写回复
  • 复制该标签页
  • 在复制的标签页中点击编辑器的回复按钮
7 个赞

说实话,之前到底怎么运行的我们也不清楚。我们仍然需要对 composer 模型和控制器进行大规模重构,但至少现在内容能正确加载,不再像以前那样靠运气了。

11 个赞

这个问题仍然存在。我目前没有复现步骤,但今天确实遇到了。

好的,但如果没有复现步骤,我们究竟能做什么?

因此,我按照以下步骤复现了该问题:

  • 浏览至某个主题,点击“回复”按钮以打开编辑器
  • 开始撰写回复
  • 复制标签页(可以通过右键点击标签页实现)
    ---- 新步骤
  • 点击论坛标志
  • 点击另一个主题
  • 编辑器应显示您之前的回复内容
  • 点击编辑器的“回复”按钮(此时您应仍处于复制的标签页中)

您应该看到类似以下内容:

11 个赞

这应该能解决问题:

https://review.discourse.org/t/fix-when-loading-drafts-set-the-topic/10372

这段代码相当脆弱,且测试起来非常复杂。

11 个赞