[ruby-on-rails] 레일스-개행 문자를 <br>로 변환하는 레일 방법이 있습니까?

\ n을 변환하는 Railsy 방법이 <br>있습니까?

현재 다음과 같이하고 있습니다.

mystring.gsub(/\n/, '<br>')



답변

예, rails는 simple_format당신이 찾고있는 것을 정확히하고 단락 태그를 추가하기 때문에 약간 더 좋습니다. 보다

http://api.rubyonrails.org/classes/ActionView/Helpers/TextHelper.html#method-i-simple_format

예:

 simple_format(mystring)

simple_format기본 HTML 태그 를 허용하지만 sanitize모든 스크립트를 제거하는 텍스트도 전달 하므로 사용자 입력에 안전해야합니다.


답변

다음을 수행하여 더 일반적으로 만들 수 있습니다.

mystring.gsub(/(?:\n\r?|\r\n?)/, '<br>')

이렇게하면 DOS, * NIX, Mac 및 실수로 인한 잘못된 줄 끝을 다룰 수 있습니다.


답변

사용자 입력을 처리 할 때주의해야합니다. 태그를
simple_format삽입 <br>하지만 다른 HTML 태그를 허용합니다 !

simple_format을 사용하면 <b>Hello</b>Hello ” 로 렌더링되므로 원하지 않을 수 있습니다.

대신 <%= h(c.text).gsub("\n", "<br>").html_safe %>
h()html을 먼저 인코딩 gsub하고 줄 바꿈을 대체 html_safe하고<br> 태그가 표시 될 수 있습니다.

사용자가 입력 한 내용이 정확히 표시됩니다. 예를 들어 주석에서 html을 토론 할 수도 있습니다.


답변

간단히 사용

white-space: pre-line;

CSS에서 텍스트는 줄 바꿈으로 줄 바꿈됩니다.


답변

당신은 또한 당신이하려는 일을 고려할 수 있습니다. 사람들이 입력 한 텍스트의 서식을 멋지게 지정하고 있다면, 사용자가 HTML 인 웜을 열지 않고 텍스트 서식을 지정할 수 있도록하는 Markdown 과 같은 필터를 고려할 수 있습니다. 여기 Stack Overflow에있는 것처럼 요.


답변

아니. 당신이 가지고있는 것은 일반적으로 사용되는 대안입니다. 대부분의 사람들이 사용하는 정의는 다음과 같습니다.

   def nl2br text
       text.gsub(/\n/, '<br/>')
   end

같은 이름으로 PHP 함수 의 기능을 모방하기 때문에 이름이 붙여졌습니다 .


답변

mystring.gsub(/\r\n|\r|\n/, '\n')

나를 위해 일했다