В приложении RAils в файле rout.rb мы маршрутизируем некоторые устаревшие URL-адреса, например:
get "downloads/item/:slug", :to => redirect {|params| "/downloads/#{params[:slug].gsub('.', '')}"}, :constraints => { :slug => /[^\/]+/ }
Однако проблема в том, что некоторые из этих устаревших URL-адресов содержат не кодируемые символы, например, многоточие, которое прерывает команду gsub
с ошибкой:
NilClass # (ArgumentError) "недопустимая последовательность байтов в UTF-8"
Мой вопрос: как мне перехватить это исключение и, следовательно, другие исключения, как в моем файле rout.rb? Я предполагаю, что это отличается от наличия «универсального» в конце файла для маршрутизации на 404.