【发布时间】:2014-11-06 11:51:10
【问题描述】:
Helper 函数可以接收他们yield 的块来渲染块。有时我希望该块带有过滤器。比如:
= doc_page title: 'FAQ' do
:markdown
# Welcome to the *FAQ*
这不是那么 DRY,因为我们总是一起编写 doc_page 和 markdown。我可以让辅助方法接受一个块并通过 HAML 过滤器传递它吗?比如:
= doc_page title: 'FAQ' do
# Welcome to the *FAQ*
在这个幻想中,doc_page 是一个辅助方法,它会做一些设置,然后通过 markdown 传递内容,从而使我们无需在任何地方声明 :markdown 并使世界成为一个 DRYer 的地方。
【问题讨论】:
-
这个问题不清楚。您到底想在助手内部做什么?将 Haml 块渲染为 HTML?
-
更新了问题。我正在尝试制作一个输出标题然后通过降价传递块的助手,以节省每次都必须在助手调用下放置一个单独的
:markdown声明。 -
不重要,但是:为什么要通过标题?为什么不在
markdown文本中包含它?它可能看起来更完整。另外,将降价文本放在单独的markdown文件中,然后让助手加载它们不是更好吗?在我看来,这将更加优雅。另外,它可能更容易编辑,因为它只是纯粹的markdown;编辑器可能会更好地处理文件语法突出显示。 -
@JikkuJose 如果您有 100 个这样的页面并且您手动呈现标题,那么如果您想更改页面结构,例如在一个简单的情况下,如果您想将所有标题从 h2 更改为 h3。我并不是要过度设计,但在实践中,这种大规模重构确实时不时发生。
-
@mahemoff 很抱歉,但我仍然认为将所有内容都包含在降价文件中很优雅;显然这就是大多数静态站点生成器(如 Jekyll、Middleman 和大多数其他站点生成器)处理数据的方式。现在,谈到您更改标题样式的具体情况:坦率地说,通过 CSS 对所有页面标题进行样式更改非常容易吗?此外,如果你真的需要,你可以很容易地编写一个脚本来对所有页面进行编辑。
标签: ruby-on-rails ruby filter haml dry