这可能受到了最近 Discourse 更新(当前版本为 2.5.0.beta2)的影响。
我有一个 多选下拉字段,此前已设置并正常工作,且设置为注册后可编辑等。
但现在对于现有用户,虽然该字段的内容会显示在其用户个人资料页面中,但在用户偏好设置页面中,该字段并未与其他可编辑的自定义用户字段一同列出。
换句话说,用户或管理员已无法再更改该字段。
此外,对于新注册用户,虽然多选字段可见,但下拉选项均无法显示(仅看到一个细长的空白蓝色矩形)——由于该字段被设置为必填项,注册流程无法继续。
这是一个已知问题吗?是否已确认是由 Discourse 更新导致的?是否已知与之兼容的最新 Discourse 版本是什么?是否有合理的回退方法?
我已在 GitHub 上提交了问题报告,但注意到该插件已有一两年没有开发活动,因此不太乐观地认为能从该方向获得解决方案。是否还有其他可行的方法在 Discourse 中实现用户字段的多选下拉功能?
FYI 过去几个月内,核心组件的 Select Kit 已大幅升级至 2.0 版本。这影响了多个插件,尤其是此类控件。如果该插件自那时起未得到维护,可能确实无法正常工作。
建议您在此处联系开发者,或在其对应的元主题(Meta Topic)中发帖(如果存在)?如果他们没有回应,而此事对您足够重要,可以在 Marketplace 频道发帖,寻找自由职业者接手?
3 个赞
谢谢——已给这里唯一一位与 GitHub 用户名相似的用户发了消息,希望是同一人!
这些对核心功能的改动是否会导致像这样的插件需要进行大量重构?
我想知道为什么多选功能还没有被纳入核心功能?
谢谢罗伯特。非常幸运的是,@j.jaffeux 刚刚表示他愿意修复这个插件——这个社区真是太棒了!
1 个赞
Sudaraka
(Sudaraka Jayathilaka)
8
@j.jaffeux 感谢您的修复。我已经合并了它 
5 个赞
你好,感谢你们两人给出的精彩反馈!
我已同时更新了插件和 Discourse 以包含最新更改,但用户个人资料页面缺少下拉字段的问题依然存在。
一个可能相关的问题是,在所有情况下,我都必须双击用户偏好设置页面左侧的“用户资料”链接。第一次点击仅显示标准用户字段,只有第二次点击才会同时显示自定义用户字段——但不包括多选字段(遗憾的是,点击三次也无济于事)。
我已在多个浏览器上尝试,并清除了每个浏览器的缓存。
我可以确认,新用户注册现在可以看到下拉选项。
这是否有助于缩小问题范围?
Paul_King
(Paul King)
11
好的!2020-03-12_00h34_39|视频
在视频中,我高亮显示了用户在偏好设置页面中看到的“多选”字段。但如您所见,即使两次点击“个人资料”,该字段仍未出现,因此仍无法编辑。
您可能还会注意到用户偏好设置页面上的另一个问题:当某字段对相应用户有多个适用选项时,多选项之间没有显示逗号分隔。
j.jaffeux
(Joffrey Jaffeux)
12
当字段未显示时,请在您的浏览器控制台中向我展示错误信息。
关于逗号的问题,这不是 Discourse 的回归问题。
Paul_King
(Paul King)
13
控制台窗口显示了以下消息,这是我第一次点击“个人资料”时出现的:
VM173:1 Uncaught SyntaxError: Unexpected token N in JSON at position 0
at JSON.parse (<anonymous>)
at t.init_values (_discourse-multiselect-user-field-307aa8bb3934aada9a7d682455decf422704c235754739f0d5e4b19e3e909690.js:63)
at D (_ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:25381)
at p (_ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:41427)
at Function.e.create (_ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:42006)
at e.t.create (_ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:11490)
at t.n.create (_ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:18623)
at Object.evaluate (_ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:60870)
at e.t.evaluate (_ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:59374)
at e.t.evaluateSyscall (_ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:62789)
init_values @ _discourse-multiselect-user-field-307aa8bb3934aada9a7d682455decf422704c235754739f0d5e4b19e3e909690.js:63
D @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:25381
p @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:41427
e.create @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:42006
t.create @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:11490
n.create @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:18623
(anonymous) @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:60870
t.evaluate @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:59374
t.evaluateSyscall @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:62789
t.evaluateInner @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:62735
t.evaluateOuter @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:62727
e.next @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:64859
e.execute @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:64843
t.handleException @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:63724
t.handleException @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:63904
t.throw @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:63622
r.evaluate @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:60213
t.execute @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:63609
t.rerender @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:63936
h.render @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:19079
V @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:25920
t._renderRoots @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:19372
t._renderRootsTransaction @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:19410
t._revalidate @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:19456
t.invoke @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:66276
t.flush @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:66168
t.flush @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:66372
t._end @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:66948
t.end @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:66634
t._run @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:67003
t._join @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:66977
t.join @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:66694
f @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:53486
(anonymous) @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:45901
r @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:49817
handleEvent @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:45897
handleEvent @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:44834
(anonymous) @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:45224
dispatch @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:5251
v.handle @ _ember_jquery-3ed0ac532033dfeecf1ec0676df6716cd7076530930c656754ccf103d35b3e23.js:5058
Show 10 more frames
再次点击“个人资料”似乎并没有改变控制台中的错误消息。
如果需要的话,我可以提供视频录制吗?
是否有可能在列出的选项之间添加逗号?目前,如果多个选项适用,它们会一个接一个地列出而没有分隔符,读起来就像是一个长长的选项字符串。
j.jaffeux
(Joffrey Jaffeux)
17
我不确定你是如何陷入这种状态的,但不知为何,你的设置值是错误的。我已向该插件提交了一个拉取请求(PR),以增强解析的鲁棒性,并规定在某种情况下值无法被 JSON 解析时,回退到某个默认值。
至于另一个“问题”,那是针对该插件所有者的功能请求。不过,我其实也不确定他们是否能实现它。
1 个赞
Paul_King
(Paul King)
18
谢谢!
到目前为止,我的 Discourse 安装尚未检测到更新。
根据上面的内容,似乎需要进行“合并”操作?
我可以尝试自行完成此操作,而不会给任何人带来麻烦吗?
在此期间是否有办法手动更新插件?如果可以,Discourse 是否仍能管理后续的更新?
j.jaffeux
(Joffrey Jaffeux)
19
这不是 Discourse 核心的问题,我已向插件所有者提交了拉取请求。在他们合并之前,我们无能为力。
3 个赞
Paul_King
(Paul King)
20
成功了!更新已生效,现在一切似乎都正常运行了——非常感谢各位!
2 个赞