如何使用Redcarpet和Markdown呈现表格

时间:2012-09-06 08:58:27

标签: markdown redcarpet

我正在尝试使用Redcarpet

渲染这样的表格
| header 1 | header 2 |
| -------- | -------- |
| cell 1   | cell 2   |
| cell 3   | cell 4   |

但它不起作用。

是否可以使用Redcarpet呈现表格?

2 个答案:

答案 0 :(得分:28)

是的,您可以渲染这样的表格,但您必须启用: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>

答案 1 :(得分:2)

表格格式的接受答案很棒。尝试将其添加为注释会丢失格式。然而,添加它作为答案也有些疑问。

无论如何......这是关于使用带有haml的markdown table选项的问题(在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)