【问题标题】:Possible to embed markdown within erb?可以在erb中嵌入markdown吗?
【发布时间】:2011-02-25 05:26:55
【问题描述】:

如果您使用haml 作为rails 视图模板,您可以使用“:markdown”过滤器使用markdown 编写部分页面。

是否可以使用 erb 做同样的事情?

【问题讨论】:

    标签: ruby-on-rails markdown haml erb


    【解决方案1】:

    假设您使用像 Rails 这样的具有 #capture#concat#markdown 帮助器的方法,编写一个方法非常容易。这是一个使用 Maruku 的示例:

    def markdown_filter(&block)
      concat(markdown(capture(&block)))
    end
    

    那么你可以这样使用:

    <% markdown_filter do %>
    # Title
    
    This is a *paragraph*.
    
    This is **another paragraph**.
    <% end %>
    

    这里有几点需要注意。首先,重要的是块中的所有文本都没有缩进;你可以通过找出线条的共同缩进并删除它来解决这个问题,但我在上面的示例助手中没有这样做。其次,它使用 Rails 的 #markdown 帮助器,它可以很容易地在其他框架中实现(用您选择的 Markdown 处理器替换 Maruku):

    def markdown(text)
      Maruku.new(text).to_html
    end
    

    Rails 3 已删除 #markdown 帮助程序,因此只需在适当的帮助程序中添加上述代码,替换您选择的 Markdown 处理器。

    【讨论】:

      【解决方案2】:

      ERB 没有内置的过滤功能。您需要直接使用处理它的 gem,例如 RDiscount 或古老的 BlueCloth。

      【讨论】:

      • 公平地说,Haml 也没有内置 Markdown 支持:它使用系统上可用的任何 Markdown gem。另外,我会推荐纯 Ruby Maruku 库,而不是基于 C 的 RDiscount 和 BlueCloth,除非速度是一个严重的问题(它不应该是良好的缓存)。
      猜你喜欢
      • 2023-04-06
      • 2021-10-11
      • 2022-11-11
      • 2012-12-20
      • 1970-01-01
      • 2019-04-17
      • 2019-11-04
      • 2011-02-14
      • 1970-01-01
      相关资源
      最近更新 更多