3

Redcarpet のドキュメントを読んでいて、次の文に出くわしました。

The Markdown object is encouraged to be instantiated once with the required settings, and reused between parses.

Railsアプリでこれを行うための最良の方法は何ですか?

Redcarpet で Ryan Bates の railscast を見たところ、彼は次のようにapplication_helper.rb、すべてのメソッド呼び出しが新しいRedcarpetオブジェクトをインスタンス化するヘルパー メソッドを持っています。

def markdown(text)
  options = [:hard_wrap, :filter_html, :autolink, :no_intraemphasis, :fenced_code, :gh_blockcode]
  Redcarpet.new(text, *options).to_html.html_safe
end

これは、これを行うための最良の方法ではありませんか? アドバイスをありがとう。

4

1 に答える 1

1

これがRailsのやり方かどうかはわかりませんが、問題ないようで、POLAなどに違反していないので、うまくいけばあなたのニーズに合うでしょう.

markdown.rbフォルダーにファイルを作成しconfig/initializers/、次のコード スニペットのバリエーションを使用します。

class MultiRenderer < Redcarpet::Render::HTML
  include Redcarpet::Render::SmartyPants
end

module Paradox
  Markdown = Redcarpet::Markdown.new(MultiRenderer)
end

Paradoxアプリケーションの名前に置き換えます。readmeで説明されているように、レンダラーまたはマークダウンのインスタンスにさまざまなオプションを追加できます。私が作成したレンダラー ( MultiRenderer) には smartypants が組み込まれているため、引用符などを丸めることができます。

Markdown を使用するには、 を呼び出すだけYourApp::Markdown.render(text)で、html が返されます。おそらく、その上で html_safe を実行する必要があります。

于 2013-09-14T22:44:23.983 に答える