HTML5中的链接标签不应该是自闭合的,但HAML会自动将其闭合。

4
据我了解,HTML5中的标签默认情况下不应该是自闭合的(虽然可以使用自闭合标签)。但是,我正在使用HAML来开发我的应用程序,使用HTML5文档类型(!!! 5),并在application.rb中指定Haml::Template.options [:format] =:html5
然而,当我查看生成的标记时,我的链接标签仍然使用自闭合标签/>
这是怎么回事?这是使用HTML5 doctype的HAML的默认行为,还是我配置有误?

这是一个使用 Rails 辅助函数的应用程序吗,例如 stylesheet_link_tag - matt
1个回答

6
如果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'>

通过在environment.rb中设置Haml::Template.options[:format] = :xhtml,将格式更改为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文档
当:format选项设置为:html5时,!!!始终是<!DOCTYPE html>
因此,无论您在!!!之后放什么,您都应该得到<!DOCTYPE html>

啊!那就是问题所在。谢谢 - 还有在 !!! 和 !!! 5 之间切换没有任何效果,我想当我认为这解决了问题时我可能已经累了 :) - quoo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接