Slug de categoria com caracteres Unicode resulta em loop de redirecionamento

Ativei (alguns) caracteres Unicode em nomes de usuário e tudo funciona conforme o esperado.

Quando tentei usar caracteres Unicode em um slug de categoria, ele foi convertido para codificação percentual e permiti que as alterações fossem salvas, mas não consegui mais acessar a lista de tópicos da categoria porque recebia ERR_TOO_MANY_REDIRECTS.

Parece que resolvi o problema usando o console do Rails:

Category.find(id).update(slug: ‘slug-sem-unicode’)

Isso não é um impedimento crítico, mas pode quebrar funcionalidades, então sugiro que a funcionalidade seja totalmente implementada ou que haja uma proteção contra isso.

3 curtidas

Algum trabalho já foi feito sobre isso no passado, mas não acho que o problema que você encontrou tenha sido resolvido. O que acho que aconteceu é que você tem o método de geração de slug definido como ‘ascii’ e inseriu diretamente um slug de categoria que contém caracteres não-ascii. Posso reproduzir esse problema no meu site com o método de geração de slug definido como ‘ascii’ e o seguinte texto (yetersizliği) inserido diretamente no campo Slug da Categoria:

Após salvar a categoria:

Tentar carregar essa lista de categorias então falha.

Se eu não inserir nada no campo Slug da Categoria, o Discourse criará o slug corretamente quando o método de geração de slug estiver definido como ‘ascii’.

Com o método de geração de slug definido como ‘encoded’, o Discourse lida corretamente com a criação do slug tanto quando deixo a entrada do Slug da Categoria vazia quanto quando insiro diretamente o slug não-ascii na entrada.

Parece, portanto, que o problema é que, quando o método de geração de slug está definido como ‘ascii’, slugs não-ascii ainda podem ser inseridos no campo Slug da Categoria. Isso causa um problema de redirecionamento que só pode ser corrigido pelo console do Rails.

6 curtidas

Então, o que precisamos é de uma validação de modelo ao salvar aqui, certo?

Posso assumir isso.

5 curtidas

Foi exatamente isso que fiz. Estava editando uma categoria que já havia sido criada — tanto seu nome quanto seu slug. Não sabia sobre a configuração do método de geração de slug e, mesmo tendo descoberto depois que ela estava definida como ascii, o slug foi codificado de qualquer forma.

Esse tipo de coerção pode fazer sentido, mas apenas se o slug codificado puder ser reconhecido posteriormente, ignorando a configuração de maneira semelhante.

1 curtida

Isso deve corrigir o problema

10 curtidas

3 posts foram movidos para um novo tópico: Nome de usuário Unicode resulta em erro ao carregar a página do perfil

O PR acima foi mesclado :tada:

2 curtidas