0

Rails アプリケーションで投稿とコメントに bb-code を使用しています。現時点では、投稿のコンテンツをビューに配置するために次の方法があります。

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

bb コードを html に変換し、すべてのリンクに「nofollow」を追加する最良の方法は何ですか?

ありがとう!

4

1 に答える 1

2

使用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 %>
于 2012-04-30T00:23:31.383 に答える