- Para listar membros em um grupo, o código backend aceita os parâmetros
ordereascpara ordenar por um campo específico em ordem ascendente/descendente. Quando o parâmetroascestá presente e não está em branco, é a ordem ascendente, caso contrário, descendente. - O código frontend da página de membros do grupo também parece ser capaz de analisar parâmetros de consulta e passá-los para o backend.
ascétruepor padrão no frontend.
Quando navego para este link: https://try.discourse.org/g/trust_level_2?order=added_at&asc=, espero que este seja um link direto para me mostrar os membros TL2 ordenados por tempo de adição em ordem descendente, sem ter que clicar manualmente no cabeçalho da tabela para alternar a ordenação.
No entanto, o comportamento real é que: ele mostra os membros TL2 ordenados por tempo de adição em ordem ascendente, ainda com um ícone de “chevron-para-baixo” (sugerindo que deveria ter sido mostrado em ordem descendente):
Olhando para a aba Network nas DevTools, a página emitiu uma requisição de https://try.discourse.org/groups/trust_level_2/members.json?offset=0&order=added_at&asc=false&filter=, em vez de https://try.discourse.org/groups/trust_level_2/members.json?offset=0&order=added_at&asc=&filter=.
Como todos os parâmetros de URL são strings, asc=false será considerado como não em branco pela lógica params[:asc] && params[:asc].present?, retornando assim um resultado ascendente. Talvez o código frontend deva converter o valor booleano false de asc para uma string vazia no parâmetro da URL?
