В Rails - есть ли метод rails для преобразования строк в <br>? - PullRequest
109 голосов
/ 04 марта 2009

Есть ли Railsy способ конвертировать \ n в <br>?

В настоящее время я делаю это так:

mystring.gsub(/\n/, '<br>')

Ответы [ 7 ]

245 голосов
/ 04 марта 2009

Да, у rails есть simple_format, который делает именно то, что вы ищете, и немного лучше, поскольку он также добавляет теги абзаца. См

http://api.rubyonrails.org/classes/ActionView/Helpers/TextHelper.html#method-i-simple_format

Пример:

 simple_format(mystring)

Обратите внимание, что simple_format допускает базовые теги HTML, но также пропускает текст через sanitize, который удаляет все сценарии, поэтому он должен быть безопасным для ввода пользователем.

40 голосов
/ 04 марта 2009

Вы можете сделать это более общим, выполнив:

mystring.gsub(/(?:\n\r?|\r\n?)/, '<br>')

Таким образом, вы бы охватили DOS, * NIX, Mac и случайные неверные окончания строк.

28 голосов
/ 29 июля 2013

Вы должны быть осторожны с этим, когда имеете дело с пользовательским вводом.
simple_format вставляет <br> теги, но разрешит другие html-теги !

При использовании simple_format <b>Hello</b> будет отображаться как " Hello ", возможно, вы этого не захотите.

Вместо этого вы можете использовать <%= h(c.text).gsub("\n", "<br>").html_safe %>
h() будет сначала кодировать HTML, gsub заменяет разрыв строки, а html_safe позволяет отображать теги <br>.

Это будет отображать именно то, что пользователь ввел. Это также позволяет обсуждать HTML, например, комментарии.

15 голосов
/ 11 февраля 2015

Просто используйте

white-space: pre-line;

в вашем css и тексте переносятся на разрывы строк.

1 голос
/ 04 марта 2009

Вы также можете подумать о том, что вы пытаетесь сделать - если вы хорошо форматируете текст, который ввели люди, вы можете рассмотреть фильтр типа Уценка , чтобы позволить вашим пользователям форматировать их текст, не открывая банка червей, которая является HTML. Вы знаете, как здесь, в переполнении стека.

0 голосов
/ 05 октября 2017
mystring.gsub(/\r\n|\r|\n/, '\n')

работал для меня

0 голосов
/ 04 марта 2009

Неа. То, что у вас есть, является широко используемой альтернативой. Определение, которое использует большинство людей:

   def nl2br text
       text.gsub(/\n/, '<br/>')
   end

Он назван так, потому что он имитирует функциональность функции PHP с тем же именем .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...