Как я могу заставить Textile создавать ссылки из простых URL-адресов?
Многие из моих пользователей вводят простые URL-адреса и не используют текстильный формат для создания ссылок. Я хотел бы, чтобы Textile просто сделал ссылку доступной для URL. Мне не нужно беспокоиться о XSS или о чем-либо злонамеренном, потому что это внутренняя сеть с очень небольшой группой пользователей. Каков наилучший способ достижения этой функциональности?
Я использую версию RedCloth для Ruby.
2 ответа
Как насчет этого?
def urls2links( s )
s.gsub(
/([^:])((https?|ftp)\:\/\/[^\s)'"]+[^.,)\s])(. |, |[\s]|\) | )/,
'\1<a href="\2" target="_blank">\2</a>\4')
end
def textile2html( s )
textilize(urls2links(s)).html_safe
end
Используйте этот текст, чтобы проверить это:
Plain urls converted to external links by my textile2html helper:
* http://www.google.com
* http://www.google.com,
* http://www.google.com.
Я не уверен, может ли RedCloth превратить URL-адреса в интерактивные ссылки, но есть текстовый помощник Rails с именем auto_link, который может это сделать.