HTML5中的链接标签不应该自动关闭,但HAML正在关闭它们

时间:2011-06-29 20:28:46

标签: html5 haml link-tag

我的理解是,HTML5中的标签默认情况下不应该自动关闭(尽管允许使用自闭标签)。但是,我正在使用HAML作为我的应用程序,使用HTML5 doctype(!!! 5)并在application.rb中指定Haml::Template.options[:format] = :html5

但是,当我查看生成的标记时,我的链接标记仍然以/>

关闭

知道这里发生了什么吗?这是使用html 5 doctype的HAML的默认行为还是我配置错误了?

1 个答案:

答案 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>之后得到!!!