【问题标题】:Sinatra render and passing rendering options for RedcarpetRedcarpet 的 Sinatra 渲染和传递渲染选项
【发布时间】:2012-05-22 05:50:20
【问题描述】:

我使用的是 Sinatra,而 Sinatra 使用 Tilt 进行模板渲染。

默认情况下,Redcarpet 有许多渲染扩展。如何通过 Sinatra 的 #render 方法使用其中一些扩展?

我需要渲染带有:gh_codeblock 扩展名的markdown 文件。

【问题讨论】:

    标签: sinatra markdown tilt redcarpet


    【解决方案1】:

    在 Sinatra 中,您通常不直接使用 render 方法,而是使用 method corresponding to the appropriate template language,在本例中为 markdown

    应该能够将您想要的任何选项作为哈希传递给此方法,Sinatra(和 Tilt)会将它们传递给模板引擎。但是,最新发布的 Tilt gem (1.3.3) 并没有通过所有的降价选项,只有:filter_html:smart,所以这不起作用。这已在当前的 Tilt head 中修复,只是尚未发布到发布的 gem 中。

    如果您使用的是Bundler,则可以使用Bundler’s Git support 解决此问题:

    gem 'tilt', :git => 'git://github.com/rtomayko/tilt.git'
    

    或者,您可以download 最新版本的 Tilt 并确保其 lib 目录位于您的应用程序加载路径中,也许将其放入 vendor 目录中。

    【讨论】:

      【解决方案2】:

      如果我阅读了 sinatra、tilt 和 redcarpet 的源代码,你应该可以这样做:

      render('your_view', {:gh_codeblock => true}, {HASH_OF_YOUR_LOCAL_VARIABLES})
      

      要渲染的第二个参数是传递给模板引擎的选项哈希。见:

      def markdown(template, options={}, locals={})
        render :markdown, template, options, locals
      end
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-07-05
        • 2022-12-09
        • 1970-01-01
        • 2013-03-24
        • 2011-06-27
        • 1970-01-01
        • 2020-09-17
        相关资源
        最近更新 更多