Заголовок Ruby для пули
Как мне преобразовать заголовок сообщения в пул в Ruby?
Заголовок может иметь любые символы, но я хочу, чтобы slug разрешал [a-z0-9-_]
(если он разрешает любые другие символы?).
Итак, в основном:
- закрыть все буквы
- преобразовать пробелы в дефисы
- удалить посторонние символы
Ответы
Ответ 1
slug = title.downcase.strip.gsub(' ', '-').gsub(/[^\w-]/, '')
downcase
делает его строчным. strip
гарантирует, что нет пропущенных или завершающих пробелов. Первая gsub
заменяет пробелы дефисом. Второй gsub
удаляет все символы не-подчеркивания без альфа-символа (обратите внимание, что этот набор очень близок к \W
, но также включает тире, вот почему он прописал здесь).
Ответ 2
Это Rails?
string.parameterize
Что это. Для еще более сложного пробок см. ActsAsUrl. Он может выполнять следующие действия:
"rock & roll".to_url => "rock-and-roll"
"$12 worth of Ruby power".to_url => "12-dollars-worth-of-ruby-power"
"10% off if you act now".to_url => "10-percent-off-if-you-act-now"
"kick it en Français".to_url => "kick-it-en-francais"
"rock it Español style".to_url => "rock-it-espanol-style"
"tell your readers 你好".to_url => "tell-your-readers-ni-hao"
Ответ 3
to_slug - отличный плагин Rails, который обрабатывает почти все, включая фанковые символы, но его реализация очень проста. Вставьте его в String, и вы будете отсортированы. Здесь источник сгустился:
String.class_eval do
def to_slug
value = self.mb_chars.normalize(:kd).gsub(/[^\x00-\x7F]/n, '').to_s
value.gsub!(/[']+/, '')
value.gsub!(/\W+/, ' ')
value.strip!
value.downcase!
value.gsub!(' ', '-')
value
end
end
Ответ 4
Я использовал этот gem.It простой, но полезный.
https://rubygems.org/gems/string_helpers
Ответ 5
Мне нравится FriendlyId, самопровозглашенный "Швейцарский армейский бульдозер" по созданию пули. https://github.com/norman/friendly_id