Boolesche Attribute, wie im Entwurf der html 5-Spezifikation definiert:
http://dev.w3.org/html5/spec/Overview.html#boolean-attributes
Das Vorhandensein eines booleschen Attributs auf einem Element stellt den wahren Wert dar, und das Nichtvorhandensein des Attributs steht für den falschen Wert.
Wenn das Attribut vorhanden ist, wird sein Wert entweder die leere Zeichenkette oder ein Wert sein, der ein ASCII Groß- und Kleinschreibung für den kanonischen Namen des Attributs ist, ohne führende oder nachgestellte Leerzeichen.
Meine Seite verwendet die html5 DTD. Ich versuche, die content_tag-Ansichtshilfe in einer eigenen Hilfe zu verwenden, aber ich habe Probleme mit der Übergabe von booleschen Attributen an sie.
Das ist insbesondere mein Helfer:
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
Meiner Ansicht nach könnte ich es so nennen (ich verwende haml):
= itemscope("Organization") do
%h1 Here's some content
Ich möchte, dass es so dargestellt wird:
<div itemscope itemtype='http://data-vocabulary.org/Organization'>
<h1>Here's some content</h1>
</div>
Aber das ist es, was ich tatsächlich bekomme:
<div itemscope='true' itemtype='http://data-vocabulary.org/Organization'>
<h1>Here's some content</h1>
</div>
Dies ist nach der w3-Spezifikation eine ungültige Auszeichnungsform. Legale Werte für boolesche Attribute sind entweder der Name des Attributs selbst oder gar kein Wert.
Das ist ärgerlich, denn ich kann die :itemscope => true
a :checked => true
und es wird das Attribut korrekt als checked='checked'
in der Attributliste des div-Elements.
Ich würde es vorziehen, nur die minimierte Version von itemscope
...aber ich bin mir nicht sicher, wie ich das machen soll dass unter Verwendung der content_tag-Optionen. Ich könnte ganz einfach :itemscope => 'itemscope' senden, aber es ist schwer zu sagen, ob das von Google richtig interpretiert wird, da alle Beispiele und Spezifikationen die minimierten Versionen zeigen. Siehe hier: http://www.google.com/support/webmasters/bin/answer.py?answer=146861 um zu sehen, was diese Eigenschaften sind und warum ich sie verwende (Microdata-Format)
Jemand wissen, wie ich effektiv jedes Attribut gesendet ein true oder false (Ruby Boolean) Wert in content_tag ohne Wert zu rendern, anstatt zu versuchen, den booleschen Wert zu stringifizieren? Danke :)