Czy istnieje sposób Railsy na konwersję \ n do <br>?
Obecnie robię to tak:
mystring.gsub(/\n/, '<br>')
Czy istnieje sposób Railsy na konwersję \ n do <br>?
Obecnie robię to tak:
mystring.gsub(/\n/, '<br>')
Odpowiedzi:
Tak, railsy mają simple_formatdokładnie to, czego szukasz, i są nieco lepsze, ponieważ dodają także znaczniki akapitu. Widzieć
http://api.rubyonrails.org/classes/ActionView/Helpers/TextHelper.html#method-i-simple_format
Przykład:
simple_format(mystring)
Zauważ, że simple_formatzezwala na podstawowe znaczniki HTML, ale także przekazuje tekst, przez sanitizektóry usuwa wszystkie skrypty, więc powinno być bezpieczne dla wprowadzania danych przez użytkownika.
simple_formatautomatycznie zawija podany tekst w <p>znaczniki i nie można tego uniknąć.
javascript:alert(\no!\)jak podano w referencji. Mogą istnieć nieskończone warianty i przyszłe odmiany, z którymi hakerzy będą mogli pracować.
wrapper_tagopcję, która pozwala zmienić <p>tag na cokolwiek innego
Możesz uczynić to bardziej ogólnym, wykonując:
mystring.gsub(/(?:\n\r?|\r\n?)/, '<br>')
W ten sposób zakryjesz DOS, * NIX, Mac i przypadkowe nieprawidłowe zakończenia linii.
simple_format, możesz podzielić na tym wyrażeniu regularnym, użyj, mapaby zawinąć ciągi w otwierające i zamykające pznaczniki, a następnie je połączyć. mystring.split(/(?:\n\r?|\r\n?)/).map {|s| "<p>#{s}</p>"}.joinPowinienem to zrobić, chociaż tego nie testowałem.
<%= sanitize(planning.benefits.split(/(?:\n\r?|\r\n?)/).map {|x| "<li class='collection-item'>#{x}</li>"}.join) %>. I działa jak urok, boohoo!
mystringmoże zawierać dowolny kod HTML.
Powinieneś zachować ostrożność, gdy masz do czynienia z wprowadzaniem danych przez użytkownika.
simple_formatwstawia <br>tagi, ale pozwoli na inne tagi HTML !
Gdy używasz simple_format, <b>Hello</b>będzie renderowane jako „ Hello ”, możesz tego nie chcieć.
Zamiast tego możesz użyć, <%= h(c.text).gsub("\n", "<br>").html_safe %>
h()najpierw zakoduje kod HTML, gsubzastąpi podział wiersza i html_safeumożliwi wyświetlanie <br>tagów.
Spowoduje to wyświetlenie dokładnie tego, co wprowadził użytkownik. Pozwala również na omawianie html np. W komentarzach.
simple_formatzezwala na podstawowe znaczniki HTML, należy zauważyć, że przekazuje również tekst sanitize, co usuwa wszystko, co może być potencjalnie złośliwe. apidock.com/rails/ActionView/Helpers/TextHelper/simple_format
Po prostu użyj
white-space: pre-line;
w twoim css, a tekst będzie zawijany przy podziałach linii.
Nie. To, co tam masz, jest powszechnie używaną alternatywą. Definicja, której używa większość ludzi, to:
def nl2br text
text.gsub(/\n/, '<br/>')
end
Jest tak nazwany, ponieważ naśladuje funkcjonalność funkcji PHP o tej samej nazwie .
mystring.gsub(/\r\n|\r|\n/, '\n')
pracował dla mnie