HAML缩进问题

4

我是一个刚接触Rails和Haml的新手,但我无法使它正常工作。

我有这个局部文件(_head.html.haml):

!!!
%html
  %head
    %meta{'http-equiv' => 'Content-Type', :content => "text/html; charset=iso-8859-1"}
    = stylesheet_link_tag 'main'
  %body

然后在我的application.html.haml文件中:

= render :partial => 'shared/head'
#wrapperDIV 
  = yield :layout

但是输出结果并不完全符合我的意图:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
  <head>
    <meta content='text/html; charset=iso-8859-1' http-equiv='Content-Type' />
    <link href="/stylesheets/main.css?1266030236" media="screen" rel="stylesheet" type="text/css" />
  </head>
  <body></body>
</html>
<div id='wrapperDIV'></div>

显然,<html><body>应该包含#wrapperDIV,但似乎局部文件没有被放置在正确的层次结构中。
2个回答

4

部分视图在结尾处会自动关闭,它们应该是完整的子对象。

以下是您需要的内容:

!!!
%html
  %head
    %meta{'http-equiv' => 'Content-Type', :content => "text/html; charset=iso-8859-1"}
    = stylesheet_link_tag 'main'
  %body
    #wrapperDIV 
      = yield :layout

如果您想将和的调用放在一个局部文件中,可以这样做,但是在haml文档末尾打开的所有标签都将被关闭。

1

htmlbody需要在application.html.haml中。

!!!
%html
  = render :partial => 'shared/head'
  %body
    #wrapperDIV 
      = yield :layout

我尝试过了,但是html仍然没有包含body。不过肯定有办法让它起作用的。 - adamJLev
2
所有你想要包裹在页面内容中的东西都需要放在application.html.haml文件中,包括htmlbody标签。 - Natalie Weizenbaum

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