Rails 3和HTML 5 Microdata

dhu*_*han 5 html5 ruby-on-rails ruby-on-rails-3

在Rails中,是否可以使用任何ActionView助手创建HTML 5无值属性?我正在尝试为谷歌的BreadCrumbs创建HTML 5 itemprop微数据.这是我想要生成的输出:

<div itemscope itemtype="http://data-vocabulary.org/Breadcrumb"></div>
Run Code Online (Sandbox Code Playgroud)

但是您可以看到itemscope属性值没有值.理想情况下,我想在Rails中做这样的事情......

content_tag(:div, "somecontent", :itemscope => nil, :item_type => "http://data-vocabulary.org/Breadcrumb") 
Run Code Online (Sandbox Code Playgroud)

...但我似乎无法生成没有值的属性.

Chr*_*ald 9

不,你不能.Rails的标记助手定义了一个ActionView::Helpers::TagHelper::BOOLEAN_ATTRIBUTES数组,该数组中的任何属性都将输出为key=key,所以如果你有tag(:input, :type => :checkbox, :checked => true),那么输出应该是<input type='checkbox' checked='checked' />.

我假设这个解析得当,因为XML解析器只是检查属性的存在,所以任何值都应该有效.

为此,您可以使用:

content_tag(:div, "somecontent", :itemscope => "itemscope", :item_type ...
Run Code Online (Sandbox Code Playgroud)

这将itemscope="itemscope"在标记中输出,但在解析时应该产生相同的预期效果.

或者,您可以将itemscope添加到BOOLEAN_ATTRIBUTES,然后指定:itemscope => true.