Есть ли способ конвертировать \ n в Railsy <br>
?
В настоящее время я делаю это так:
mystring.gsub(/\n/, '<br>')
ruby-on-rails
ruby
daustin777
источник
источник
Ответы:
Да, у rails есть то,
simple_format
что делает именно то, что вы ищете, и немного лучше, поскольку оно также добавляет теги абзацев. Видетьhttp://api.rubyonrails.org/classes/ActionView/Helpers/TextHelper.html#method-i-simple_format
Пример:
Обратите внимание, что
simple_format
разрешены основные теги HTML, но также передается текст, черезsanitize
который удаляются все сценарии, поэтому он должен быть безопасным для ввода пользователем.источник
simple_format
автоматически переносит предоставленный текст в<p>
теги, и этой функции нельзя избежать.javascript:alert(\no!\)
приведенному в справочнике. Могут существовать бесконечные варианты и будущие вариации, с которыми могут работать злоумышленники.wrapper_tag
опция, позволяющая менять<p>
теги на что-нибудь ещеВы можете сделать его более общим, выполнив:
Таким образом вы охватите DOS, * NIX, Mac и случайные неверные окончания строк.
источник
simple_format
вы можете разделить на это регулярное выражение, используйте,map
чтобы обернуть строки в открывающие и закрывающиеp
теги, а затем присоединиться к ним.mystring.split(/(?:\n\r?|\r\n?)/).map {|s| "<p>#{s}</p>"}.join
должен это сделать, хотя я не тестировал.<%= sanitize(planning.benefits.split(/(?:\n\r?|\r\n?)/).map {|x| "<li class='collection-item'>#{x}</li>"}.join) %>
. И это работает как шарм буху!mystring
может содержать произвольный HTML.Вы должны быть осторожны с этим, когда имеете дело с пользовательским вводом.
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, например, в комментариях.
источник
simple_format
допускается использование основных HTML-тегов, важно отметить, что он также передает текстsanitize
, что удаляет все, что потенциально может быть вредоносным. apidock.com/rails/ActionView/Helpers/TextHelper/simple_formatПросто используйте
в вашем css, и текст будет переноситься по разрывам строки.
источник
Вы также можете подумать о том, что вы пытаетесь сделать - если вы хорошо форматируете текст, который вводят люди, вы можете подумать о фильтре, таком как Markdown, чтобы ваши пользователи могли форматировать свой текст, не открывая банку червей, которая является HTML. Вы знаете, как будто это здесь, в Stack Overflow.
источник
Нет. У вас есть часто используемая альтернатива. Большинство людей используют следующее определение:
Он назван так, потому что имитирует функциональность одноименной функции PHP .
источник
работал на меня
источник
Вы можете сделать это
simple_format(h(text))
- этоh
гарантирует, что любой HTML-код не будет отображаться.Как упоминалось в других ответах, это сделает немного больше, чем вы просили. Он оборачивает все это
<p>
и добавляет больше абзацев, если у вас есть двойные символы новой строки.источник