Подтвердить что ты не робот

Заголовок Ruby для пули

Как мне преобразовать заголовок сообщения в пул в Ruby?

Заголовок может иметь любые символы, но я хочу, чтобы slug разрешал [a-z0-9-_] (если он разрешает любые другие символы?).

Итак, в основном:

  • закрыть все буквы
  • преобразовать пробелы в дефисы
  • удалить посторонние символы
4b9b3361

Ответ 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

Ответ 5

Мне нравится FriendlyId, самопровозглашенный "Швейцарский армейский бульдозер" по созданию пули. https://github.com/norman/friendly_id