Link direto para mostrar membros do grupo em ordem decrescente não funciona

  • Para listar membros em um grupo, o código backend aceita os parâmetros order e asc para ordenar por um campo específico em ordem ascendente/descendente. Quando o parâmetro asc está 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 é true por 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?

1 curtida