您好,
当我的用户(“leader”角色)尝试创建新主题时,类别为空,如果他们单击创建主题按钮,他们会收到 404 错误:
当我(员工)尝试创建新主题时,类别仍然是空的,但我收到一个错误 You supplied invalid parameters to the request: category:
我发现了一个设置:
允许不带类别的帖子。警告:如果存在任何未分类的帖子,则必须在关闭此设置之前重新对其进行分类。
我不记得启用它,但它已启用 - 我认为这是默认设置,但不确定。
我查看了未分类的类别设置:
此类别是特殊的。它用作未选择类别的帖子的默认类别。如果要阻止此行为并强制选择类别,请在此处禁用该设置。如果要更改名称或描述,请转到 自定义 / 文本内容。
短期内,我担心我们的用户体验不佳且无法发帖。(404 错误)
我尝试在 meta.discourse.org 上搜索以找到问题的答案:
问题 1:为什么当我尝试创建新主题时,类别字段为空? (当我发帖到 meta.discourse.org 时,它不是空的)
问题 2:如果启用了“允许不带类别的帖子”,为什么我会收到错误? (我怀疑“未分类”实际上意味着“没有类别”,但它被描述为“[…]未选择类别的帖子的默认类别。”)
我实际上喜欢 meta.discourse.org 的行为;它默认为“general”而不是“uncategorised”,但不确定哪种方法是正确的;
a) 将“Uncategorised”重命名为“general”。(注意:我发现一篇帖子 - 来自 2016 年 - 表明这是一个坏主意,并将“Uncategorised”等同于数据库中的“null”。)
或者
b) 创建一个“general”类别,将所有未分类的帖子移到“general”(如何?),将“general”设置为新帖子的默认值,并禁用“允许不带类别的帖子”。
任何建议 - 或指向相关文档的链接 - 都将不胜感激。
此致,
Stephen
附注 顺便说一句,我们是一个开源项目,这是一个由 https://www.discourse.org 的好心人提供的免费 discourse 实例。
MarcP
(MarcP)
2
我也注意到了这一点。但我已经禁用了未分类,但它仍然应该在这种情况下选择顶级类别。它显示与默认值相同的(空)类别字段。
1 个赞
感谢 @MarcP!
我认为这可能是一个 bug,但我不愿过早下结论。
s.
Stephen
(Stephen)
4
斯蒂芬:
你的网站运行的是哪个版本的 Discourse?
“未分类”的“类别”最近被一个新的通用类别取代了。你的网站上是否出现了同名的类别?你以前有过通用类别吗?
MarcP
(MarcP)
5
是的,我以前有一个通用类别。正在运行最新的构建,但注意到它已经有几周了?
此问题本应通过此提交进行修复,但我注意到您的网站已更新以包含它:
有可能它并未涵盖所有情况。我们会安排人员进行查看。
5 个赞
MarcP
(MarcP)
10
嗯,当我启用 允许未分类主题 时,未分类的类别仍然出现在我的类别页面上。即使在我重命名了我的通用类别之后也是如此。
Don
11
未分类 (Uncategorized) 类别现在不再是默认的站点设置,自从 Discourse 启用 常规 (General) 类别以来。在新安装的 Discourse 中,有一个默认的 常规 (General) 类别。因此,当您打开撰写器时,自动选择的类别是 常规 (General)。但是,在没有常规类别的旧安装中,我认为任何类别都可以是常规类别。我认为这仅仅意味着在这种情况下,撰写器默认类别。因此,如果您创建一个名为 常规 (General) 的类别,这还不够。您还必须使用隐藏的站点设置 general_category_id 来设置类别 ID。
例如:
如果您为此常规目的创建一个新类别。类别名称可以例如:常规 (General),并且您还应该检查类别 ID。现在在这个例子中,它将是 9。
类别已成功创建,但如果您打开撰写器,它将不是默认类别,所以让我们设置隐藏的站点设置。
设置 category_id 为常规类别
注意:在此示例中,category_id=9 只是正确的类别 ID。您新创建的类别可能具有不同的 category_id 号码。
cd /var/discourse
./launcher enter app
rails c
SiteSetting.general_category_id=9
exit
exit
在此之后,当您打开撰写器时,category_id=9… 常规 (General) 类别将是默认类别。
2 个赞
我们没有重命名 general - 我们只有‘uncategorized’,并且我们没有重命名它。
Discourse 更新:14 小时前
我们是一个开源项目,这是一个免费的 Discourse 实例(由 https://www.discourse.org 的好心人提供),因此升级会在没有我们干预的情况下自动进行。
分类仍然显示为空白
@Don
谢谢 - 这是一个托管实例,所以我不知道如何获得 shell 访问权限来设置隐藏的站点设置。
此致
Stephen
1 个赞
对大多数团队成员来说,现在是周末,但一旦有人有空,我们就可以尽快为您解决。

4 个赞
我只想确认一下——这样我就可以最大限度地减少对最终用户的影响:
-
我是否需要创建一个“通用”类别来做准备?
-
配置更改后,我是否需要将“未分类”类别下的所有主题移至“通用”类别?
感谢您的帮助
Stephen
如果您希望实现此结果,而不是将“未分类”作为默认值,那么您可以创建一个新的“常规”类别,使用批量工具将所有“未分类”主题移入其中,然后在管理员设置中禁用“允许未分类主题”(但这不会修复下拉菜单)。
不过,这只需要团队成员几分钟时间即可修复,同时手动更新隐藏的 general_category_id 设置,所以您可能只需要等待即可。
4 个赞
MarcP
(MarcP)
19
谢谢,这个解释非常好,我已经解决了。我认为这个话题应该放在 Support,因为它不是一个 bug,我建议将您的回复标记为解决方案。
1 个赞
一切已解决。我们改用“General”而不是“uncategorised”,系统已正确提供默认类别。
感谢所有帮助诊断此问题的人员,特别感谢 @fzngagan 如此快速且专业地解决了此问题。
此致
Stephen
5 个赞
blake
(Blake Erickson)
31
对于任何在本次修复之前手动删除了默认“General”分类的用户:
现在有一个额外的修复程序,可以清理 SiteSetting.general_category_id 中设置的不存在的分类:
3 个赞