Existe uma maneira Railsy de converter \ n para <br>
?
Atualmente, estou fazendo assim:
mystring.gsub(/\n/, '<br>')
ruby-on-rails
ruby
daustin777
fonte
fonte
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. Vejohttp://api.rubyonrails.org/classes/ActionView/Helpers/TextHelper.html#method-i-simple_format
Exemplo:
Observe que
simple_format
permite tags HTML básicas, mas também passa o textosanitize
que remove todos os scripts, por isso deve ser seguro para entrada do usuário.fonte
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 coisaVocê pode torná-lo mais geral fazendo:
Desta forma, você cobrirá DOS, * NIX, Mac e terminações de linha inválidas acidentais.
fonte
simple_format
você pode dividir nessa regex, usemap
para envolver as strings nasp
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 ehtml_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.
fonte
simple_format
permita tags HTML básicas, é importante observar que também passa o textosanitize
, o que remove qualquer coisa que possa ser potencialmente malicioso. apidock.com/rails/ActionView/Helpers/TextHelper/simple_formatBasta usar
em seu css e o texto será quebrado nas quebras de linha.
fonte
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.
fonte
Não. O que você tem aí é a alternativa comumente usada. A definição que a maioria das pessoas usa é:
É nomeado assim porque imita a funcionalidade da função PHP com o mesmo nome .
fonte
trabalhou para mim
fonte
Você pode fazer
simple_format(h(text))
- oh
irá garantir que nenhum HTML seja renderizado.Conforme mencionado em outras respostas, isso fará um pouco mais do que você pediu. Isso envolve tudo
<p>
e adiciona mais parágrafos se você tiver novas linhas duplas em qualquer lugar.fonte