Unicode文字を含むカテゴリのスラッグがリダイレクトループを引き起こす

ユーザー名に(一部の)Unicode 文字を有効化しましたが、すべて想定通りに動作しています。

カテゴリのスラッグに Unicode 文字を使用しようとすると、パーセントエンコーディングに変換され、変更の保存は可能でしたが、カテゴリのトピック一覧にアクセスできなくなり、ERR_TOO_MANY_REDIRECTS エラーが発生しました。

Rails コンソールを使用して、以下のように対応することで一時的に修正しました。
\u003e Category.find(id).update(slug: ‘slug-without-unicode’)

これは致命的な問題ではありませんが、動作を破綻させる可能性があるため、完全に実装するか、あるいは回避策を講じるべきだと考えます。

「いいね!」 3

これについては過去に一部対応がなされましたが、あなたが遭遇した問題は解決されていないと思います。私が推測するところ、slug generation method が ‘ascii’ に設定されている状態で、ASCII 以外の文字を含むカテゴリスラッグを直接入力してしまったことが原因です。私のサイトでも、slug generation method を ‘ascii’ に設定し、カテゴリスラッグフィールドに以下のテキスト(yetersizliği)を直接入力することで、この問題を再現できます。

カテゴリを保存後:

その後、そのカテゴリリストの読み込みを試みると失敗します。

もしカテゴリスラッグフィールドに何も入力しなければ、slug generation method が ‘ascii’ に設定されていても、Discourse は正しくスラッグを作成します。

一方、slug generation method を ‘encoded’ に設定すれば、カテゴリスラッグ入力を空欄のままにしても、ASCII 以外のスラッグを直接入力しても、Discourse は正しくスラッグを作成します。

つまり、slug generation method が ‘ascii’ に設定されている場合でも、カテゴリスラッグフィールドに ASCII 以外のスラッグを入力できてしまうことが問題のようです。これによりリダイレクト不具合が発生し、Rails コンソールからの操作でしか修正できません。

「いいね!」 6

つまり、保存時にモデルのバリデーションが必要だよね?
私がやろうか。

「いいね!」 5

まさにその通りです。以前作成されたカテゴリ(名前とスラッグの両方)を編集していました。スラッグ生成方法の設定については知らなかったのですが、後で確認すると「ascii」に設定されていても、スラッグはエンコードされていました。

このような強制変換は、設定を無視してエンコードされたスラッグを後で認識できる場合に限って意味があるかもしれません。

「いいね!」 1

これで修正されるはずです

「いいね!」 10

3 つの投稿が新しいトピックに分割されました:Unicode ユーザー名によりプロフィールページの読み込みでエラーが発生する

上記の PR がマージされました :tada:

「いいね!」 2