Лучший способ решить эту проблему - использовать метод sanitize для удаления всего, кроме тега BR, который мы хотим.
Предположим, что у нас есть @var
с содержанием "some\ntext"
:
Попытка <%= @var.gsub(/\n/, '<br />') %>
не работает.
Попытка <%= h @var.gsub(/\n/, '<br />').html_safe %>
не работает и небезопасна.
Попытка <%= sanitize(@var.gsub(/\n/, '<br />'), :tags => %w(br) %>
РАБОТАЕТ.
Я не очень хорошо это проверил, но он позволяет тэгу BR работать и заменил фиктивное предупреждение скрипта, которое я добавил, пробелом, так что, похоже, он выполняет свою работу. Если у кого-то есть идея или вы можете сказать, является ли это безопасным решением, сделайте это.
Обновление:
Другая идея, предложенная Хосе Валимом:
<%= h(@var).gsub(/\n/, '<br />') %>
Работы