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

标签 html haml

据我了解,默认情况下,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/

相关文章:

javascript - 如何在knockoutjs foreach绑定(bind)中正确使用haml模板?

javascript - jQuery 和 HTML5 无值(数据)属性

ruby - HAML block 在产量上返回 `0`?

html - 如何控制div内的div?

javascript - 尝试水平对齐倒数计时器(第一次编码/构建)

html - Rowspan 属性不适用于倒排表

javascript - 基于最长宽度字符串的 CSS/HTML 居中段落内容

ruby - Rails 3.1.0 使用 haml 的问题 - 缺少模板错误

haml - 从编程语言(coldfusion 或 PHP)将变量传递给 sass

CSS下拉子菜单垂直对齐