Existe-t-il un moyen Railsy de convertir \ n en <br>
?
Actuellement, je le fais comme ceci:
mystring.gsub(/\n/, '<br>')
ruby-on-rails
ruby
daustin777
la source
la source
Réponses:
Oui, rails a
simple_format
qui fait exactement ce que vous recherchez, et légèrement mieux car il ajoute également des balises de paragraphe. Voirhttp://api.rubyonrails.org/classes/ActionView/Helpers/TextHelper.html#method-i-simple_format
Exemple:
Notez que cela
simple_format
autorise les balises HTML de base, mais transmet également le texte à traverssanitize
lequel supprime tous les scripts, il devrait donc être sûr pour les entrées utilisateur.la source
simple_format
enveloppe automatiquement le texte fourni dans des<p>
balises, et que cette fonctionnalité ne peut être évitée.javascript:alert(\no!\)
celle donnée dans la référence. Il pourrait y avoir des variations infinies et futures avec lesquelles les pirates malveillants pourraient travailler.wrapper_tag
option qui permet de changer de<p>
balise pour n'importe quoi d'autreVous pouvez le rendre plus général en faisant:
De cette façon, vous couvririez DOS, * NIX, Mac et les fins de ligne invalides accidentelles.
la source
simple_format
vous pouvez diviser sur cette expression régulière, utilisermap
pour envelopper les chaînes dans lesp
balises d' ouverture et de fermeture , puis les joindre.mystring.split(/(?:\n\r?|\r\n?)/).map {|s| "<p>#{s}</p>"}.join
devrait le faire, même si je ne l'ai pas testé.<%= sanitize(planning.benefits.split(/(?:\n\r?|\r\n?)/).map {|x| "<li class='collection-item'>#{x}</li>"}.join) %>
. Et ça marche comme un charme boohoo!mystring
pourrait contenir du HTML arbitraire.Vous devez être prudent avec cela lorsque vous traitez avec les entrées utilisateur.
simple_format
insère des<br>
balises mais cela autorisera d'autres balises html !Lorsque vous utilisez simple_format,
<b>Hello</b>
sera rendu comme " Hello ", vous ne voudrez peut-être pas cela.Au lieu de cela, vous pouvez utiliser
<%= h(c.text).gsub("\n", "<br>").html_safe %>
h()
encodera d'abord le html,gsub
remplace le saut de ligne ethtml_safe
permet aux<br>
balises d'être affichées.Cela affichera exactement ce que l'utilisateur a entré. Il permet également de discuter du html dans les commentaires par exemple.
la source
simple_format
les balises HTML de base soient autorisées, il est important de noter qu'elles transmettent également le textesanitize
, ce qui supprime tout ce qui pourrait être potentiellement malveillant. apidock.com/rails/ActionView/Helpers/TextHelper/simple_formatUtilisez simplement
dans votre css et le texte sera enveloppé sur les sauts de ligne.
la source
Vous pouvez également réfléchir à ce que vous essayez de faire - si vous formatez bien le texte que les gens ont entré, vous pouvez envisager un filtre comme Markdown pour permettre à vos utilisateurs de formater leur texte sans ouvrir la boîte de vers qui est HTML. Vous savez, comme c'est le cas ici chez Stack Overflow.
la source
Nan. Ce que vous avez là est l'alternative couramment utilisée. La définition que la plupart des gens utilisent est:
Il est nommé comme tel car il imite la fonctionnalité de la fonction PHP du même nom .
la source
travaillé pour moi
la source
Vous pouvez faire
simple_format(h(text))
- leh
cela garantira que le HTML n'est pas rendu.Comme mentionné dans d'autres réponses, cela fera un peu plus que ce que vous avez demandé. Il enveloppe le tout
<p>
et ajoute plus de paragraphes si vous avez des doubles retours à la ligne n'importe où.la source