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

quo*_*uoo 4 html5 haml link-tag

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

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

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

mat*_*att 6

如果link标签是由Rails助手生成的stylesheet_link_tag,那么无论Haml格式设置如何,它们都将具有结束斜杠,因为字符串只是从rails方法返回并按原样包含在输出中,与Haml无关.

所以例如这个Haml:

!!!
%html
  %head
    = stylesheet_link_tag "foo"
    %link{:rel=>"stylesheet"}
Run Code Online (Sandbox Code Playgroud)

生成以下输出,格式设置为html5(这是Rails 3的默认值):

<!DOCTYPE html> 
<html> 
  <head> 
    <link href="/stylesheets/foo.css" media="screen" rel="stylesheet" type="text/css" /> 
    <link rel='stylesheet'>
Run Code Online (Sandbox Code Playgroud)

通过使用Haml::Template.options[:format] = :xhtmlin 将格式更改为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' />
Run Code Online (Sandbox Code Playgroud)

<link>由Haml控制的元素(即%link在Haml源中)尊重格式,并在适当时包括或省略结束斜杠.Rails助手生成的链接在两种情况下都只包含结束斜杠.

什么!!!产生取决于设置什么样的格式,但是从Haml的文档:

当:format选项设置为:html5,!!!始终是<!DOCTYPE html>.

所以你应该得到<!DOCTYPE html>你放的任何东西!!!.