2010-02-14 2 views
4

Я довольно новичок в рельсах и 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, но мне кажется, Лик e частичные не попадают в правильную иерархию.

ответ

4

Partials неявно закрыты в конце. Они должны быть полными под-объектами.

Вот то, что вы хотите:

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

Если вы хотите, чтобы положить meta и stylesheet звонков в частичном, вы могли бы сделать это, но все метки, открытой в конце Haml документа будет быть закрытым.

1

В html и body потребности быть в application.html.haml

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

Я пробовал это, но тогда 'html' по-прежнему не завершает' body'. Должен быть способ работать, хотя бы ... – adamJLev

+2

Все, что вы хотите обернуть содержимым страницы, должно быть в 'application.html.haml', включая как' html', так и 'body'. –

+0

Правильно, мой пример тоже должен быть !!! и% html вверху. –

Смежные вопросы