Ну, я обычно использую удобный на заказ метод, называемый String.to_slug
. Надеюсь, вы сочтете это полезным.
Вызвать этот /lib/to_slug.rb и включить его в один инициализатор или включить его только в модель, которая генерирует URL-адреса.
String.class_eval do
#converts accented letters into ascii equivalents (eg. ñ becomes n)
def normalize
#this version is in the forums but didn't work for me
#chars.normalize(:kd).gsub!(/[^\x00-\x7F]/n,'').to_s
mb_chars.normalize(:d).gsub(/[^\x00-\x7F]/n,'').to_s
end
#returns an array of strings containing the words on a string
def words
gsub(/\W/, ' ').split
end
#convert into a nice url-ish string
def to_slug(separator='-')
strip.downcase.normalize.words.join(separator)
end
end
Объясняя, почему 'Rack :: Utils.escape' неприемлем может помочь людям дать лучшие предложения ... – ceejayoz
Это создает уродливые URL. – brainfck
На основании ваших комментариев ниже и вашего принятого ответа ваш вопрос вводит в заблуждение. Вы не хотите «кодировать» специальные символы, а скорее «конвертировать» их в обычный ascii. – ScottJ