2010-02-14 94 views
4

我很新的rails和haml ..我不能让这个工作正确。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,但似乎LIK e部分没有得到正确的层次结构。是

回答

4

局部模板在端隐含地关闭。他们应该是完整的子对象。

这里有你想要的东西:

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

如果你希望把你的metastylesheet调用的部分,你能做到这一点,但所有的标签,你必须在一个HAML文档的末尾公开赛被关闭。

1

htmlbody和需要在application.html.haml

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

我试过了,但是'html'仍然没有包裹'body'。必须有一种方法可以让这个工作尽管.. – adamJLev 2010-02-14 04:09:56

+2

你想要包装页面内容的所有东西都需要在'application.html.haml'中,包括'html'和'body'。 – 2010-02-14 05:07:17

+0

没错,我的例子也应该有!!!和顶部的%html。 – 2010-02-14 11:42:01