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_formatque 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_formatpermite tags HTML básicas, mas também passa o texto sanitizeque remove todos os scripts, por isso deve ser seguro para entrada do usuário.
simple_formatenvolve 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_tagopçã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_formatvocê pode dividir nessa regex, use mappara envolver as strings nas ptags de abertura e fechamento e, em seguida, junte-as. mystring.split(/(?:\n\r?|\r\n?)/).map {|s| "<p>#{s}</p>"}.joindeve 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!
mystringpode conter HTML arbitrário.
Você deve ter cuidado com isso ao lidar com a entrada do usuário.
simple_formatinsere <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, gsubsubstituirá a quebra de linha e html_safepermitirá 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_formatpermita 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