2013-05-10 32 views
1

我正在使用我的網站的着陸區域的佈局,並且我正在使用devise_controller?方法添加#login & .span.offset4告訴Devise視圖移動到中間並設置背景顏色。HAML把一個部分放在以前的div

%body 
    = render :partial => "landing/landingmenu" 
    - if devise_controller? 
    #login 
     .span4.offset4 
     = yield 
    - else 
    = yield 
    = render :partial => "landing/footer" 

而這與輸出頁腳中#login格內的部分,而不是外面:

<body> 
    <div id="login"> 
    <div class="span4 offset4">...</div> 
    <div class="footer">...</div> 
    </div> 
</body> 

我試圖把頁腳部分的內心的,如果是這樣,並得到相同的錯誤地嵌套HTML輸出:

%body 
    = render :partial => "landing/landingmenu" 
    - if devise_controller? 
    #login 
     .span4.offset4 
     = yield 
    = render :partial => "landing/footer" 
    - else 
    = yield 
    = render :partial => "landing/footer" 

任何想法將不勝感激!

回答

1

你需要縮進您呈現一個時間再次

%body 
    = render :partial => "landing/landingmenu" 
    - if devise_controller? 
    #login 
     .span4.offset4 
     = yield 
     = render :partial => "landing/footer" 
    - else 
    = yield 
    = render :partial => "landing/footer" 
+0

這將正確地把裏面#login頁腳股利,但我試圖讓它出現在#login div之外。 – Kirk 2013-05-13 16:13:17

+0

啊......我現在明白了。這真的很奇怪,如果你確定你的yield中沒有'#footer'(或#footer),你可能想要提出一個問題 – Ven 2013-05-13 17:50:39

0

您可以在末尾添加頁腳:

%body 
    = render :partial => "landing/landingmenu" 
    - if devise_controller? 
    #login 
     .span4.offset4 
     = yield 
    - else 
    = yield 
    = render :partial => "landing/footer" 
    .footer 
+0

它在我的第一個例子中的if語句之外,並且它沒有' t工作:/ 第二個例子在每個if語句中顯示它。 – Kirk 2013-05-13 16:14:03