Existe uma maneira Railsy de converter \ n para <br>
?
Atualmente, estou fazendo assim:
mystring.gsub(/\n/, '<br>')
Existe uma maneira Railsy de converter \ n para <br>
?
Atualmente, estou fazendo assim:
mystring.gsub(/\n/, '<br>')
Respostas:
Sim, o rails tem o simple_format
que faz exatamente o que você está procurando, e um pouco melhor, pois também adiciona tags de parágrafo. Vejo
http://api.rubyonrails.org/classes/ActionView/Helpers/TextHelper.html#method-i-simple_format
Exemplo:
simple_format(mystring)
Observe que simple_format
permite tags HTML básicas, mas também passa o texto sanitize
que remove todos os scripts, por isso deve ser seguro para entrada do usuário.
simple_format
envolve automaticamente o texto fornecido em <p>
tags, e que esta funcionalidade não pode ser evitada.
javascript:alert(\no!\)
conforme fornecido na referência. Pode haver infinitas variações e futuras variações para hackers mal-intencionados trabalharem.
wrapper_tag
opção que permite mudar a <p>
tag para qualquer outra coisa
Você pode torná-lo mais geral fazendo:
mystring.gsub(/(?:\n\r?|\r\n?)/, '<br>')
Desta forma, você cobrirá DOS, * NIX, Mac e terminações de linha inválidas acidentais.
simple_format
você pode dividir nessa regex, use map
para envolver as strings nas p
tags de abertura e fechamento e, em seguida, junte-as. mystring.split(/(?:\n\r?|\r\n?)/).map {|s| "<p>#{s}</p>"}.join
deve fazer isso, embora eu não tenha testado.
<%= sanitize(planning.benefits.split(/(?:\n\r?|\r\n?)/).map {|x| "<li class='collection-item'>#{x}</li>"}.join) %>
. E funciona como um charme boohoo!
mystring
pode conter HTML arbitrário.
Você deve ter cuidado com isso ao lidar com a entrada do usuário.
simple_format
insere <br>
tags, mas permitirá outras tags html !
Ao usar simple_format, <b>Hello</b>
será processado como " Olá ", talvez você não queira isso.
Em vez disso, você pode usar <%= h(c.text).gsub("\n", "<br>").html_safe %>
h()
o codificará o html primeiro, gsub
substituirá a quebra de linha e html_safe
permitirá que as <br>
tags sejam exibidas.
Isso exibirá exatamente o que o usuário inseriu. Também permite discutir html em, por exemplo, comentários.
simple_format
permita tags HTML básicas, é importante observar que também passa o texto sanitize
, o que remove qualquer coisa que possa ser potencialmente malicioso. apidock.com/rails/ActionView/Helpers/TextHelper/simple_format
Basta usar
white-space: pre-line;
em seu css e o texto será quebrado nas quebras de linha.
Você também pode considerar o que está tentando fazer - se estiver formatando bem o texto que as pessoas inseriram, pode considerar um filtro como o Markdown para permitir que seus usuários formatem o texto sem abrir a lata de worms que é o HTML. Você sabe, como é aqui no Stack Overflow.
Não. O que você tem aí é a alternativa comumente usada. A definição que a maioria das pessoas usa é:
def nl2br text
text.gsub(/\n/, '<br/>')
end
É nomeado assim porque imita a funcionalidade da função PHP com o mesmo nome .
mystring.gsub(/\r\n|\r|\n/, '\n')
trabalhou para mim