mah*_*off 5 ruby haml ruby-on-rails dry filter
辅助函数可以接收一个块yield来渲染该块。有时我希望该块使用过滤器进行规范。例如:
= doc_page title: 'FAQ' do
:markdown
# Welcome to the *FAQ*
Run Code Online (Sandbox Code Playgroud)
这并不是那么枯燥,因为我们总是一起编写 doc_page 和 markdown。我可以让辅助方法接受一个块并通过 HAML 过滤器传递它吗?就像是:
= doc_page title: 'FAQ' do
# Welcome to the *FAQ*
Run Code Online (Sandbox Code Playgroud)
在这个幻想中,doc_page是一个辅助方法,它做一些设置,然后通过降价传递内容,使我们无需在:markdown任何地方声明并使世界成为一个干燥的地方。
目前无法在助手中使用过滤器。另一种方法是使用 redcarpet 来解析降价,然后将输出传递给助手。
一个例子是:
= doc_page title: 'FAQ', :markdown do
### my markdown
= doc_page title: 'FAQ' do
normal html
Run Code Online (Sandbox Code Playgroud)
doc_page 的实现将是这样的:
def doc_page(title, markup=:html)
content = yield
if markup == :markdown
markdown = Redcarpet::Markdown.new(Redcarpet::Render::HTML)
content = markdown.render(content)
end
content
end
Run Code Online (Sandbox Code Playgroud)
这将解决您的问题,因为您在帮助程序中定义了降价过滤器。而且您的haml 中不需要额外的缩进级别。