J'implémente les microformats de schéma sur un projet Ruby à l'aide de HAML et je ne vois pas comment définir un attribut vide sur une balise. J'ai essayé nil et faux, mais ils ne sont tout simplement pas montrés.
Exemple: <div itemscope>
Je suis tring pour définir un attribut itemscope vide.
Mon code:
.agency.premium{:itemscope => true, :itemtype => 'schema.org/ProfessionalService';}
:itemscope => true
semble être l'approche recommandée par la documentation de HAML. J'obtiens le même résultat qu'avec :itemscope => ''
, un attribut XHTML-valid avec une valeur vide (c'est-à-dire <div itemscope="">
).
Probablement bien, mais je préférerais qu'il soit vide, comme indiqué dans la documentation Schema.
En utilisant quelque chose comme
%div{:itemscope => true}
est le bon moyen de spécifier cela dans votre fichier Haml.
La manière dont cela est rendu dépend de la manière dont vous définissez l'option format
de Haml . La valeur par défaut dans Haml 3.1 est xhtml
, ce qui rendra itemprop='itemprop'
, qui est valide xhtml. Pour rendre avec des attributs minimisés (tels que <div itemscope>
), vous devez définir le format sur html4
ou html5
. (Dans Rails 3, la valeur par défaut est html5
et dans Haml 4.0, la valeur par défaut est html5
).
Comment définir les options de Haml dépend de son utilisation, voir la section options dans la documentation .
Par exemple, en utilisant Haml directement en Ruby, ceci:
engine = Haml::Engine.new '%div{:itemscope => true}'
puts engine.render
produit le xhtml par défaut avec les attributs complets:
<div itemscope='itemscope'></div>
Mais ça:
engine = Haml::Engine.new '%div{:itemscope => true}', :format => :html5
puts engine.render
produit le résultat souhaité avec des attributs minimisés:
<div itemscope></div>
La réponse acceptée fonctionne, mais produit un attribut HTML avec une valeur.
Si vous voulez que l'attribut soit uniquement imprimé en HTML, sans valeur, vous pouvez utiliser la syntaxe des attributs de style HTML de de HAML :
%div(itemscope)
Si quelqu'un est intéressé par la façon de mettre plus de mots de cette façon, il peut utiliser "foo bar" => true
:
%option{ "disabled selected value" => true } Choose an option
le résultat est:
<option disabled="" selected="" value="">Choose an option</option>
et fonctionne comme prévu.