Если теги 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'>
Изменяя формат на xhtml с Haml::Template.options[:format] = :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 (т. Е. %link
в источнике Haml), учитывает формат и включает или исключает закрывающую косую черту в зависимости от ситуации. Ссылка, создаваемая помощником Rails, просто включает закрывающую косую черту в обоих случаях.
То, что создает !!!
, зависит от того, какой формат установлен, но от Документов Haml :
Когда для параметра: format установлено значение :html5
, !!!
всегда равно <!DOCTYPE html>
.
Так что вы должны получить <!DOCTYPE html>
все, что вы положили после !!!
.