Dönüştürme yapmanın Railsy bir yolu var mı <br>
?
Şu anda bunu şöyle yapıyorum:
mystring.gsub(/\n/, '<br>')
Dönüştürme yapmanın Railsy bir yolu var mı <br>
?
Şu anda bunu şöyle yapıyorum:
mystring.gsub(/\n/, '<br>')
Yanıtlar:
Evet, raylarda simple_format
tam olarak aradığınız şeyi yapan ve paragraf etiketleri de eklediği için biraz daha iyi vardır. Görmek
http://api.rubyonrails.org/classes/ActionView/Helpers/TextHelper.html#method-i-simple_format
Misal:
simple_format(mystring)
Not simple_format
temel HTML etiketlerini izin verir, ama aynı zamanda içinden metni geçer sanitize
o kullanıcı girişi için güvenli olmalıdır, böylece tüm komut dosyalarını kaldırır hangi.
simple_format
otomatik sağlanan metin sarar <p>
etiketler ve bu işlevsellik kaçınılması edilemez.
javascript:alert(\no!\)
Referansta verildiği gibi özel sözdizimini yorumlayan Rails'e dayanır . Kötü niyetli bilgisayar korsanlarının birlikte çalışabileceği sonsuz varyasyonlar ve gelecekteki varyasyonlar olabilir.
wrapper_tag
değiştirmeye izin veren bir seçeneğe sahiptir<p>
Şunları yaparak daha genel hale getirebilirsiniz:
mystring.gsub(/(?:\n\r?|\r\n?)/, '<br>')
Bu şekilde DOS, * NIX, Mac ve yanlışlıkla geçersiz satır sonlarını kapatmış olursunuz.
simple_format
istiyorsanız, o normal ifadeye bölünebilir map
, dizeleri açılış ve kapanış p
etiketlerinde sarmalamak için kullanın ve ardından onlara katılın. mystring.split(/(?:\n\r?|\r\n?)/).map {|s| "<p>#{s}</p>"}.join
test etmemiş olsam da yapmalıyım.
<%= sanitize(planning.benefits.split(/(?:\n\r?|\r\n?)/).map {|x| "<li class='collection-item'>#{x}</li>"}.join) %>
. Ve bir çekicilik gibi çalışıyor, boohoo!
mystring
keyfi HTML içerebilir.
Kullanıcı girdisiyle uğraşırken buna dikkat etmelisiniz. etiketleri
simple_format
ekler, <br>
ancak diğer html etiketlerine izin verir !
Simple_format kullanıldığında, <b>Hello</b>
" Merhaba " olarak görüntülenecektir, bunu istemeyebilirsiniz.
Bunun yerine <%= h(c.text).gsub("\n", "<br>").html_safe %>
h()
html'yi kodlayacak, gsub
satır sonunu değiştirecek ve etiketlerin görüntülenmesine html_safe
izin vereceksiniz <br>
.
Bu, kullanıcının tam olarak ne girdiğini gösterecektir. Ayrıca html'yi yorumlarda tartışmaya da izin verir.
simple_format
Temel HTML etiketlerine izin verirken , metni de ilettiğini ve sanitize
bu da potansiyel olarak kötü niyetli olabilecek her şeyi ortadan kaldırdığını unutmamak önemlidir . apidock.com/rails/ActionView/Helpers/TextHelper/simple_format
Basitçe kullan
white-space: pre-line;
css ve metin satır sonlarında kaydırılır.
Ayrıca ne yapmaya çalıştığınızı da düşünebilirsiniz - insanların girdiği metni güzel bir şekilde biçimlendiriyorsanız , kullanıcılarınızın HTML olan solucan kutusunu açmadan metinlerini biçimlendirmelerine izin veren Markdown gibi bir filtre düşünebilirsiniz . Bilirsiniz, Stack Overflow'da olduğu gibi.
Hayır! Orada sahip olduğunuz şey, yaygın olarak kullanılan alternatiftir. Çoğu insanın kullandığı tanım şudur:
def nl2br text
text.gsub(/\n/, '<br/>')
end
Bu şekilde adlandırılmıştır çünkü PHP işlevinin işlevselliğini aynı adla taklit eder .
mystring.gsub(/\r\n|\r|\n/, '\n')
benim için çalıştı