1

我正在使用 Sinatra,而 Sinatra 使用 Tilt 进行模板渲染。

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

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

4

2 回答 2

2

在 Sinatra 中,您通常不render直接使用方法,而是使用与相应模板语言对应的方法,在这种情况下markdown

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

如果您使用的是Bundler ,则可以通过使用Bundler 的 Git 支持来解决此问题:

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

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

于 2012-05-21T21:50:20.803 回答
0

如果我阅读了 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
于 2012-05-20T20:03:43.500 回答