Ruby HAML的空属性

Str*_*ent 49 ruby haml ruby-on-rails

我正在使用HAML在Ruby项目上实现Schema微格式,并且无法弄清楚如何在标记上设置空属性.我尝试了nil和false,但他们根本没有显示.

例: <div itemscope>

我想设置一个空的itemscope属性.

@StrangeElement评论添加的代码:

我的代码:

.agency.premium{:itemscope => true, :itemtype => 'schema.org/ProfessionalService';} 
Run Code Online (Sandbox Code Playgroud)

:itemscope => true似乎是HAML文档中推荐的方法.我得到了与我相同的结果:itemscope => '',一个带有空值的XHTML有效属性(即<div itemscope="">).

可能没问题,但我宁愿把它弄空,如Schema doc中所记录的那样.

mat*_*att 74

使用类似的东西

%div{:itemscope => true}
Run Code Online (Sandbox Code Playgroud)

是在Haml文件中指定它的正确方法.

如何渲染取决于你如何设置Haml的format选项.Haml 3.1中的默认值是xhtml,并且它将呈现为itemprop='itemprop',这是有效的xhtml.要使用最小化属性(如<div itemscope>)进行渲染,您需要将格式设置为html4html5.(在Rails 3中默认为html5,而在Haml 4.0中默认为html5).

如何设置Haml选项取决于您如何使用它,请参阅文档中选项部分.

例如,直接在Ruby中使用Haml,这个:

engine = Haml::Engine.new '%div{:itemscope => true}'
puts engine.render
Run Code Online (Sandbox Code Playgroud)

生成具有完整属性的默认xhtml:

<div itemscope='itemscope'></div>
Run Code Online (Sandbox Code Playgroud)

但是这个:

engine = Haml::Engine.new '%div{:itemscope => true}', :format => :html5
puts engine.render
Run Code Online (Sandbox Code Playgroud)

使用最小化的属性生成所需的结果:

<div itemscope></div>
Run Code Online (Sandbox Code Playgroud)