双重 # 会导致核心中的对象设置验证失败(并非此 TC 本身)。
无效的 URI(不是 URI 吗?):“https://matrix.to/#/#matrix-meta-chat:fedoraproject.org”(URI::InvalidURIError)
它不是一个严格有效的 URI,所以你需要对片段进行编码。
这里,使用 https://matrix.to/#/%23matrix-meta-chat:fedoraproject.org 将会起作用。
查看代码:
https://github.com/discourse/discourse/blob/main/lib/theme_settings_object_validator.rb#L191-L193
is_valid_url 定义在这里:
你可以看到他们已经有了另一个函数来处理这种情况,并且在其他地方也被使用了:
我认为对于主题对象 URL 验证使用 relaxed_parse 是合理的。
例如:if validations&.dig(:url) && !UrlHelper.relaxed_parse?(value)