据我了解,默认情况下,HTML5 中的标签不应自动关闭(尽管允许使用自动关闭标签)。但是我在我的应用程序中使用 HAML,使用 HTML5 文档类型 (!!! 5
) 并在 application.rb 中指定 Haml::Template.options[:format] = :html5
但是,当我查看我生成的标记时,我的链接标签仍然用自闭标签 />
知道这里发生了什么吗?这是 HAML 与 HTML5 文档类型的默认行为,还是我配置不正确?
最佳答案
如果link
标签由 Rails 助手生成,例如 stylesheet_link_tag
, 那么无论 Haml 格式设置如何,它们都会有结束斜杠,因为字符串只是从 rails 方法返回并按原样包含在输出中,与 Haml 无关。
例如这个 Haml:
!!!
%html
%head
= stylesheet_link_tag "foo"
%link{:rel=>"stylesheet"}
生成以下格式设置为 html5(这是 Rails 3 的默认格式)的输出:
<!DOCTYPE html>
<html>
<head>
<link href="/stylesheets/foo.css" media="screen" rel="stylesheet" type="text/css" />
<link rel='stylesheet'>
通过使用 Haml::Template.options[:format] = :xhtml
将格式更改为 xhtml在environment.rb
, 相同的 Haml 产生这个:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<link href="/stylesheets/foo.css" media="screen" rel="stylesheet" type="text/css" />
<link rel='stylesheet' />
<link>
由 Haml 控制的元素(即 Haml 源代码中的 %link
)遵循格式,并根据需要包含或省略结束斜杠。在这两种情况下,Rails 助手生成的链接只包含结束斜杠。
什么 !!!
产生取决于设置的格式,但来自 Haml docs :
When the :format option is set to
:html5
,!!!
is always<!DOCTYPE html>
.
所以你应该得到 <!DOCTYPE html>
不管你在!!!
之后放什么.
关于html - HTML5 中的链接标签不应自动关闭,但 HAML 正在关闭它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6526841/