- 要列出群组中的成员,后端代码接受
order和asc参数,以升序/降序对特定字段进行排序。当asc参数存在且非空时,表示升序,否则表示降序。 - 群组成员页面的前端代码似乎也能解析查询参数并传递给后端。前端默认
asc为true。
当我导航到此链接时:https://try.discourse.org/g/trust_level_2?order=added_at&asc=,我期望这是一个直接链接,显示按添加时间降序排序的 TL2 成员,而无需手动单击表头来切换排序。
然而,实际行为是:它显示按添加时间升序排序的 TL2 成员,但带有“chevron-down”图标(表明它应该显示为降序):
查看 DevTools 中的 Network 选项卡,页面发出了一个请求:https://try.discourse.org/groups/trust_level_2/members.json?offset=0&order=added_at&asc=false&filter=,而不是 https://try.discourse.org/groups/trust_level_2/members.json?offset=0&order=added_at&asc=&filter=。
由于所有 URL 参数都是字符串,asc=false 将被 params[:asc] && params[:asc].present? 逻辑视为非空,从而返回升序结果。也许前端代码应该将 asc 的布尔值 false 转换为 URL 参数中的空字符串?
