Я изучил наш код, и похоже, что ошибка довольно проста, но я хотел бы проверить свои предположения.
У нас есть настройка сайта с именем slug_generation_method, которую необходимо изменить со значения по умолчанию ascii на encoded, чтобы вызвать эту ошибку. При изменении этой настройки мы очищаем все слайги и генерируем их заново.
Что я не понимаю, так это почему при установке настройки сайта в значение “encoded” слайг генерируется следующим образом:
[3] pry(main)> SiteSetting.slug_generation_method
=> "encoded"
[4] pry(main)> Slug.for(t.slug)
=> "キノの旅-home-thread-intermediate-book-club"
где я ожидал, что “encoded” означает что-то вроде
[5] pry(main)> CGI.escape(Slug.for(t.slug))
=> "%E3%82%AD%E3%83%8E%E3%81%AE%E6%97%85-home-thread-intermediate-book-club"
Это, по-видимому, связано с
Необработанный слайг из таблицы возвращается в заголовке Location ответа 301, когда слайг темы не совпадает, и, на мой взгляд, мы должны возвращать там корректный URL.