2013-04-02 3 views
1

레일 웹 사이트에서 텍스트 서식을 지정하기 위해 Bluecloth를 사용하고 있지만 일부 이메일 주소에 문제가 있습니다. 주소에 이중 밑줄이 있으면 BlueCloth가이를 EM 태그로 변환합니다. 레일 콘솔에서BlueCloth 사용하기 일부 텍스트에 대한 글자 표시를 해제하려면 어떻게합니까?

:

BlueCloth::new("[email protected]").to_html 
"<p>bob<em>jones</em>[email protected]</p>" 

: 하나의 밑줄 된 이메일 주소가 잘 작동하지만 주소에서 두 개의 밑줄이있을 때 밑줄이 EM 태그에 변경

BlueCloth::new("[email protected]").to_html 
"<p>[email protected]</p>" 

나머지 텍스트는 서식이 필요하지만 전자 메일 주소의 경우에는 해제해야합니다. notextile 태그를 사용할 수 있었지만 더 이상 작동하지 않는 것 같습니다.

BlueCloth::new("<notextile> [email protected] </notextile>").to_html 
"<p><notextile> bob<em>jones</em>[email protected] </notextile></p>" 

누구나이를 어떻게 처리해야하는지 알고 계십니까? 우리는 블루투스 버전 2.2.0을 사용하고 있습니다.

답변

2

하나의 옵션은 true:relaxed 설정을 전환하는 것입니다

BlueCloth.new('[email protected]', relaxed: true).to_html 

The option documentation is available online하지만 옵션의 이름과 그들이 기본 C 라이브러리의 옵션에 매핑하는 방식은 항상 명확하지 않다. 당신이 explicitly escape the underscores을 할 수

당신이 어떤 장소에서의 단어 강조를 필요로하는 곳에 텍스트를 기본 옵션을 사용하려면이 아닌 다른 사람 :

escaped_email = '[email protected]'.gsub('_', '\_') 
BlueCloth.new(escaped_email).to_html 
+0

정말 고마워요! 이것은 나를 위해 작동합니다. –

0

왜 문자열 보간을 사용하지 않는?

BlueCloth::new("don't format this: %s").to_html % '[email protected]' 
=> "<p>don't format this: [email protected]</p>" 

원본 문자열을 유지하려는 위치를 알지 못한다면 ... 이상합니다.

+0

응답을 주셔서 감사합니다. 그 좋은 생각이지만 콘텐츠는 외부 소스에서 나에게 제공되므로 제어 할 권한이 없습니다. –