【发布时间】:2015-01-12 22:17:14
【问题描述】:
我正在尝试在我的 Rails 4 应用程序中实现 BEM 助手,以帮助我更愉快地编写视图。
假设我们有以下Haml 视图:
= block :user_bar, unregistered: current_user.unregistered? do |b|
- if current_user.unregistered?
= b.element :inner do
You are not registered.
假设block和虚构类BEMBlockBuilder的方法#element(其中一个实例以b传递)被定义,并假设current_user.unregistered?是true,我们应该得到以下 HTML 输出:
<div class="user-bar user-bar--unregistered">
<div class="user-bar__inner">
You are not registered.
</div>
</div>
这种技术应该可以设置块、元素并对其应用修改器,而不必每次都重复块的名称,并且它可以简单地基于绑定到它们的值来应用修改器是真实的.
该技术本身与使用 form_for 帮助程序时发生的情况有些相似,因为它将FormBuilder 的实例传递给块。
此技术与 form_for 帮助器之间的主要区别在于,您最终可能会使用大量嵌套块来渲染视图,而其中的输出可能未知。
这种技术会影响 Rails(或 HAML)以负面方式执行缓存的能力,还是会损害总体渲染性能?
【问题讨论】:
-
如果你的助手是纯函数——它不应该,因为函数的结果是可以预测的。但这一切都取决于您使用的助手的内部逻辑。在某些情况下,这可能是个麻烦。
标签: ruby-on-rails caching view haml bem