我的理解是,HTML5中的标签默认情况下不应该自动关闭(尽管允许使用自闭标签)。但是,我正在使用HAML作为我的应用程序,使用HTML5 doctype(!!! 5
)并在application.rb中指定Haml::Template.options[:format] = :html5
但是,当我查看生成的标记时,我的链接标记仍然以/>
关闭知道这里发生了什么吗?这是使用html 5 doctype的HAML的默认行为还是我配置错误了?
答案 0 :(得分:5)
如果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
中的environment.rb
将格式更改为xhtml,相同的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' />
由Haml控制的<link>
元素(即Haml源中的%link
)尊重格式,并在适当时包括或省略结束斜杠。 Rails帮助程序生成的链接在两种情况下都包含结束斜杠。
!!!
生成的内容取决于所设置的格式,但来自Haml docs:
当:format选项设置为
:html5
时,!!!
始终为<!DOCTYPE html>
。
所以你应该在<!DOCTYPE html>
之后得到!!!
。