17

Redcarpetでこのようなテーブルをレンダリングしようとしています

| header 1 | header 2 |
| -------- | -------- |
| cell 1   | cell 2   |
| cell 3   | cell 4   |

しかし、それは機能していません。

Redcarpetでテーブルをレンダリングすることは可能ですか?

4

2 に答える 2

33

はい、そのようなテーブルをレンダリングできますが、:tablesオプションを有効にする必要があります。

require 'redcarpet'
markdown = Redcarpet::Markdown.new(Redcarpet::Render::HTML, :tables => true)

text = <<END
| header 1 | header 2 |
| -------- | -------- |
| cell 1   | cell 2   |
| cell 3   | cell 4   |
END

puts markdown.render(text)

出力:

<table><thead>
<tr>
<th>header 1</th>
<th>header 2</th>
</tr>
</thead><tbody>
<tr>
<td>cell 1</td>
<td>cell 2</td>
</tr>
<tr>
<td>cell 3</td>
<td>cell 4</td>
</tr>
</tbody></table>
于 2012-11-13T14:25:52.987 に答える
2

表形式で受け入れられている答えは素晴らしいです。これをコメントとして追加しようとすると、フォーマットが失われます。それでも、答えとしてそれを追加することも、いくぶん疑わしいです。

とにかく...これは、hamlでマークダウンテーブルオプションを使用することについての質問への回答です(Railsのコンテキストで)。

application_helper.rb

  def markdown(content)
    return '' unless content.present?
    @options ||= {
        autolink: true,
        space_after_headers: true,
        fenced_code_blocks: true,
        underline: true,
        highlight: true,
        footnotes: true,
        tables: true,
        link_attributes: {rel: 'nofollow', target: "_blank"}
    }
    @markdown ||= Redcarpet::Markdown.new(Redcarpet::Render::HTML, @options)
    @markdown.render(content).html_safe
  end

次に、ビュー(views / product_lines / show.html.haml)で:

= markdown(product_line.description)
于 2015-07-04T16:08:07.580 に答える