我正在使用Sinatra,而Sinatra使用Tilt进行模板渲染。
默认情况下,Redcarpet有许多渲染扩展。如何通过Sinatra的#render
方法使用其中一些扩展?
我需要使用:gh_codeblock
扩展名来渲染markdown文件。
答案 0 :(得分:2)
在Sinatra中,您通常不会直接使用render
方法,而是使用method corresponding to the appropriate template language,在这种情况下markdown
。
你应该能够将你想要的任何选项作为哈希传递给这个方法,Sinatra(和Tilt)会将它们传递给模板引擎。但是,最新发布的Tilt gem(1.3.3)并未通过标记的所有选项,只有:filter_html
和:smart
,所以这不起作用。这在当前的Tilt头中是固定的,它还没有进入已发布的宝石。
如果您使用的是Bundler,则可以使用Bundler’s Git support解决此问题:
gem 'tilt', :git => 'git://github.com/rtomayko/tilt.git'
或者您可以download最新版本的Tilt,并确保其lib
目录位于您的应用加载路径上,可能会将其放入vendor
目录。
答案 1 :(得分:0)
如果我读了sinatra的源代码,倾斜和redcarpet,你应该可以这样做:
render('your_view', {:gh_codeblock => true}, {HASH_OF_YOUR_LOCAL_VARIABLES})
要呈现的第二个参数是传递给模板引擎的选项哈希。参见:
def markdown(template, options={}, locals={})
render :markdown, template, options, locals
end