Ruby on Rails content_tag options hash - 设置boolean html属性?
布尔属性,在html 5草案规范中定义:
http://dev.w3.org/html5/spec/Overview.html#boolean-attributes
是否存在布尔属性
元素代表真实价值,
并且没有属性
代表虚假的价值。
如果属性存在,则为其值
必须是空字符串或a
值是ASCII
不区分大小写的匹配
属性的规范名称,没有
领先或尾随空格。
我的页面使用的是html5 DTD。我试图在我自己的帮助器中使用content_tag视图助手,但是遇到了将布尔属性传递给它的问题。
具体来说这是我的帮手:
def itemscope(type, options = {}, &block)
content_tag(
:div, {
:itemscope => true,
:itemtype => data_definition_url(type)
}.merge(options),
true,
&block
)
end
def data_definition_url(type)
"http://data-vocabulary.org/#{type}"
end
在我看来,假设我称之为(我正在使用haml):
= itemscope("Organization") do
%h1 Here's some content
这是我希望它呈现的内容:
<div itemscope itemtype='http://data-vocabulary.org/Organization'>
<h1>Here's some content</h1>
</div>
但这就是我实际得到的:
<div itemscope='true' itemtype='http://data-vocabulary.org/Organization'>
<h1>Here's some content</h1>
</div>
根据w3规范,这是无效标记。布尔属性的合法值是属性本身的名称,或者根本没有值。
这很烦人,因为我可以将:itemscope => true
改为:checked => true
,它会在div元素的属性列表中正确地将属性渲染为checked='checked'
。
我更喜欢它渲染最小版本的itemscope
...但我不知道如何使用content_tag选项。我可以很容易地发送:itemscope =>'itemscope',但很难说谷歌是否会正确解释它,因为他们的所有示例和规范都显示了最小化的版本。请参阅此处:http://www.google.com/support/webmasters/bin/answer.py?answer = 146861,了解这些属性是什么以及我使用它们的原因(微数据格式)
任何人都知道如何有效地获取任何属性在content_tag中发送一个真或假(ruby boolean)值来呈现没有任何值而不是尝试字符串化布尔值?谢谢 :)
没有找到相关结果
已邀请:
2 个回复
窃誓额
的初始化程序中
Et Voila!重新启动Rails你应该很高兴。我不知道如何使这个东西只添加一个空白属性,只是如何使其工作像检查,禁用,只读等...
授巨