Only allow URL safe characters (ASCII) for topic_explore_projects_path
Previous discussion in https://gitlab.com/gitlab-org/gitlab/-/merge_requests/122970#note_1422903154 The `topic_explore_projects_path_path(topic_name: )` accepts too much. We should restrict character set for `Topic#name`. Note we already have `Topic#title` for user facing string ~~To also solve for https://gitlab.com/gitlab-org/gitlab/-/issues/479264 for unicode users, rather than a blanket "invalid characters" message we should separately identify that unicode characters are not possible and must be replaced by ASCII characters.~~ Solved in https://gitlab.com/gitlab-org/gitlab/-/merge_requests/168899. ## Implementation Guide 1. [x] Release N: Add new `slug` column. Add code that populates `slug` from `name` for new records 2. [x] Release N: Populate `slug` column, using data from `name` column with https://docs.gitlab.com/ee/development/database/batched_background_migrations.html. 2. [ ] Release M onwards: Ensure that the `slug` column has presence validation, and is non-nullable in the database. This includes: - Adding `presence: true` validation to `slug` - Swapping out `name` in the form with `slug` - Adding a DB migration to set the `slug` column to be non-nullable - Checking all other places where `name` is used, and replace that with `slug` instead. 3. [ ] Release M onwards: Now that the `name` column is no longer used, follow the steps to drop the `name` column https://docs.gitlab.com/ee/development/database/avoiding_downtime_in_migrations.html#dropping-columns. 4. Remove the `explore_topics_cleaned_path` FF, if not already done
issue