12

ユーザーにテキストエリアに Markdown テキストを入力してもらい、投稿すると、対応する html を表示します。Rails には、markdownメソッドまたは同様に呼び出されたメソッドがあり、ERB ファイルのそのフィールドで呼び出すことができると読みました。

<%= markdown(@post.content) %>

どうやら、Rails はその機能を取り除いたようです。その機能を再び取得するための最良の方法は何ですか? それは私のニーズを解決するようです。

4

3 に答える 3

18

Redcarpetを使用して、markdown-html 変換を行います。また、変換をビューから他のオブジェクトに移動します。コールバック( before_save) を使用するか、オブザーバーを使用できます。

ドキュメントから:

markdown = Redcarpet::Markdown.new(Redcarpet::Render::HTML,
    :autolink => true, :space_after_headers => true)

markdown.render("This is *bongos*, indeed.")
#=> "<p>This is <em>bongos</em>, indeed</p>"

@post.content_parsedたとえば、ユーザーが後で投稿を編集できるように、結果を別の列に保存することをお勧めします。また、この方法では、すべてのリクエストで変換を行う必要がありません。

于 2012-12-22T19:39:47.077 に答える
1

これが私の解決策です

Gemfile

gem "redcarpet"

config/initializers/markdown_renderer.rb

module MarkdownRenderer
  def self.markdown
    @@markdown ||=
      Redcarpet::Markdown.new(
        Redcarpet::Render::HTML.new(
          escape_html: true,
          hard_wrap: true,
          safe_links_only: true,
          with_toc_data: true
        ),
        autolink: true,
        fenced_code_blocks: true,
        no_intra_emphasis: true,
        space_after_headers: true,
        tables: true
      )
  end

  def self.render(text)
    markdown.render(text)
  end
end

アプリ/ヘルパー/application_helper.rb

def markdown(text)
  MarkdownRenderer.render(text).html_safe
end

あなたの見解

<%= markdown(@post.content) %>
于 2021-06-23T11:10:00.353 に答える