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为您的应用程序的名称。您可以向渲染器或 markdown 实例添加各种选项,如自述文件中所述。我创建的渲染器(MultiRenderer)内置了 smartypants,所以你可以圆引号和诸如此类的东西

要使用 Markdown,只需调用YourApp::Markdown.render(text),您将获得 html。您可能需要在上面运行 html_safe 。

于 2013-09-14T22:44:23.983 回答