【问题标题】:Markdown rendered with Redcarpet missing dashes for lists and new lines between sections使用 Redcarpet 渲染的 Markdown 缺少列表的破折号和部分之间的新行
【发布时间】:2017-07-03 20:33:36
【问题描述】:

我生成了一些降价,在文本形式中看起来像这样:

"### 我们正在寻找具有...\r\n\r\n- 重要 Rails 的人 经验\r\n- 良好的沟通技巧 (推荐)\r\n\r\n\r\n### 你应该位于:\r\n\r\n- 柏林\r\n- 旧金山\r\n- 多伦多\r\n"

ApplicationHelper.rb,我有以下内容:

module ApplicationHelper
    def markdown(content)
      return '' if content.blank?

      @options = {
           autolink: true,
           space_after_headers: true,
           underline: true,
           link_attributes: {rel: 'nofollow', target: "_blank"}
       }

      markdown = Redcarpet::Markdown.new(Redcarpet::Render::HTML, @options)

      markdown.render(content).html_safe
    end
end

无论我在每个 H3 部分之间添加多少换行符(在本例中为 3 个新行),这两个部分都紧挨着彼此拥抱,而不是尊重文本中的 3 个\ns。

此外,列表中的每个项目之前都没有 -* 字符。

我查看了 Redcarpet 文档,但没有看到任何我可以启用以尊重新行和列表项的内容。将 Markdown 编译成的每个 html 标签都列入白名单似乎不是正确的解决方案。

任何帮助将不胜感激。谢谢!

【问题讨论】:

    标签: ruby-on-rails ruby markdown ruby-on-rails-5 redcarpet


    【解决方案1】:

    Redcarpet 的输出是 HTML。它在浏览器中的显示方式取决于您如何设置此 HTML 的样式,并且或多或少与源 Markdown 中的间距无关。

    您提供的降价代码会生成以下 HTML:

    <h3>We&#39;re looking for someone with…</h3>
    
    <ul>
    <li>Significant Rails experience</li>
    <li>Good communication skills (recommended)</li>
    </ul>
    
    <h3>You should be located near:</h3>
    
    <ul>
    <li>Berlin</li>
    <li>San Francisco</li>
    <li>Toronto</li>
    </ul>
    

    无论列表和标题之间有多少换行符,都会生成完全相同的 HTML。

    渲染时会出现多少空间取决于您的 CSS。例如,您可能希望将margin-toppadding-top 添加到h3 元素以创建更多空间。

    列表图标也是如此,您可能将 list-style 设置为 none,这就是为什么项目符号没有出现的原因。

    【讨论】:

    • 你说得对。问题在于我的 CSS 重置,而不是任何与 Redcarpet 或 Markdown 相关的东西。谢谢马特。明天让我奖励你赏金。感谢您的快速帮助
    【解决方案2】:

    这些示例选项可能可以帮助您解决问题,选择并删除您不需要的选项。 对于 Rails,将您的数据类型更改为文本而不是字符串,因为它不能使用换行符。

    options = {
        :fenced_code_blocks => true,
        :no_intra_emphasis => true,
        :autolink => true,
        :strikethrough => true,
        :lax_html_blocks => true,
        # :superscript => true,
        :tables => true,
        :with_toc_data => true
      }
    

    你应该用这个来测试,

    ### We're looking for someone with
    
    - Significant Rails experience
    - Good communication skills (recommended)
    
    ### You should be located near
    
    - Berlin
    - San Francisco
    - Toronto
    

    【讨论】:

    • 感谢您的回答,我将列从字符串更改为文本,并尝试使用示例中的降价输入新条目,渲染没有变化。这些选项都没有改变任何东西。间距和列表项仍然不起作用,并且显示与以前相同
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-10
    • 1970-01-01
    • 2015-01-29
    • 1970-01-01
    • 2021-11-27
    相关资源
    最近更新 更多