例如,如果使用haml:
%html{'xmlns' => "http://www.w3.org/1999/xhtml",
'xmlns:og' => "http://ogp.me/ns#",
'xmlns:fb' => "http://www.facebook.com/2008/fbml"}
输出为:
<html xmlns:fb='http://www.facebook.com/2008/fbml' xmlns:og='http://ogp.me/ns#' xmlns='http://www.w3.org/1999/xhtml'>
这是不同的顺序。 有没有办法按照指定的顺序制作?
(它使用的是Ruby 1.9.2和Rails 3.0.6)
更新 1:虽然在 HTML 中,属性的顺序无关紧要,但在某些情况下,我只想遵循规范所说的。 谁知道他们的解析器做了什么,以及它是否使用一些正则表达式来做遵循规范的人会匹配的事情,但不遵循规范将不匹配,因为他们使用正则表达式进行解析的"错误"。
更新2:或者,如果在一般情况下有其他东西怎么办? 它不需要是 HTML 属性。 它可以是任何顺序重要的事物。
我会指出 HTML 中的参数是无序的,所以不清楚你为什么会关心这个。
如果你真的想保持顺序,你可以使用备用的 HAML 语法:
%html(xmlns="http://www.w3.org/1999/xhtml"
xmlns:og="http://ogp.me/ns#"
xmlns:fb="http://www.facebook.com/2008/fbml")
编辑:替代语法给出相同的结果。 goto "arguments_are_orderless"
自己从帮助程序函数生成实际的 HTML 字符串,则可以。
def html_with_ns
'<html xmlns="...">'
end
然后
=html_with_ns
在模板中。不是很有吸引力,但也许这就是在这种情况下完美的代价。
你可能会争辩说这不应该是必需的,因为哈希实际上是在 Ruby 1.9 中排序的(请参阅下面的评论,我不知道是这种情况)。也许 Haml 在 1.9 以下运行时不对哈希进行排序的补丁可能是有序的......