2012-04-13 8 views
0

게시 및 댓글을 위해 레일즈 애플리케이션에서 bb 코드를 사용하고 있습니다. 지금이 순간, 내가보기에 게시물의 내용을 넣어 다음과 같습니다Ruby on Rails : bbc 코드 및 성능

<%= @post.content.bbcode_to_html.html_safe.gsub('<a', '<a rel="nofollow"') %> 

HTML과 모든 링크에 "따르지"를 추가 BB-코드를 변환하는 가장 좋은 방법은 무엇입니까?

감사합니다.

답변

2

사용중인 bb-ruby 보석은 bbcode_to_html 메서드에 대한 매개 변수로 전달 된 사용자 정의 BBCode 번역을 사용할 수 있습니다. 그러나 링크에 rel="nofollow"이 포함되도록하려면 원한다면 보석 자체에 패치하는 것이 좋습니다. BBRuby source을 바탕으로, 당신은이 작업을 수행 할 수 : 항상 따르지 속성을 포함하는

module BBRuby 
    @@tags = @@tags.merge({ 
    'Link' => [ 
     /\[url=(.*?)\](.*?)\[\/url\]/mi, 
     '<a href="\1" rel="nofollow">\2</a>', 
     'Hyperlink to somewhere else', 
     'Maybe try looking on [url=http://google.com]Google[/url]?', 
     :link], 
    'Link (Implied)' => [ 
     /\[url\](.*?)\[\/url\]/mi, 
     '<a href="\1" rel="nofollow">\1</a>', 
     'Hyperlink (implied)', 
     "Maybe try looking on [url]http://google.com[/url]", 
     :link], 
    'Link (Automatic)' => [ 
     /(\A|\s)((https?:\/\/|www\.)[^\s<]+)/, 
     ' <a href="\2" rel="nofollow">\2</a>', 
     'Hyperlink (automatic)', 
     'Maybe try looking on http://www.google.com', 
     :link] 
    }) 
end 

이것은 BBRuby 번역기를 다시 작성합니다. 나는 이것을 config/initializers에 넣을 것이다. bbruby_nofollow_monkeypatch.rb

html_safe에 관해서는 그대로 둔다. 내가 그것을 이해함에 따라 그것을하는 것이 선호되는 방법이며 내 의견으로는 그것은 당신의 의도를 분명하게 유지시켜줍니다. 위의 원숭이 패치는보기의 선을 더 읽기 쉽게 만듭니다.

<%= @post.content.bbcode_to_html.html_safe %> 
+0

감사합니다. 필자는 Rails에 아직까지 익숙하지 않았기 때문에 원숭이가 보석을 어떻게 패치 할 수 있는지 보는 것은 흥미 롭습니다. –

+0

문제는 없지만 수작업으로 현상금을 수여해야한다는 것을 알고 있습니다. http://stackoverflow.com/faq#bounty –