Rails アプリケーションで投稿とコメントに bb-code を使用しています。現時点では、投稿のコンテンツをビューに配置するために次の方法があります。
<%= @post.content.bbcode_to_html.html_safe.gsub('<a', '<a rel="nofollow"') %>
bb コードを html に変換し、すべてのリンクに「nofollow」を追加する最良の方法は何ですか?
ありがとう!
Rails アプリケーションで投稿とコメントに bb-code を使用しています。現時点では、投稿のコンテンツをビューに配置するために次の方法があります。
<%= @post.content.bbcode_to_html.html_safe.gsub('<a', '<a rel="nofollow"') %>
bb コードを html に変換し、すべてのリンクに「nofollow」を追加する最良の方法は何ですか?
ありがとう!
使用bb-ruby
している gem では、メソッドにパラメーターとして渡されるカスタム BBCode 変換を使用できますbbcode_to_html
。ただし、本当にすべてのリンクに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 トランスレータが常に nofollow 属性を含むように書き換えられます。config/initializers
次のようなわかりやすいファイル名でこれを入れますbbruby_nofollow_monkeypatch.rb
についてはhtml_safe
、そのままにしておきます。私が理解しているように、それはそれを行うための好ましい方法であり、私の意見では、それはあなたの意図を明確に保ちます. 上記のモンキー パッチにより、ビューの行が読みやすくなります。
<%= @post.content.bbcode_to_html.html_safe %>