2012-03-29 23 views
1

使用嵌套佈局我基本上與中間人2工作,但如果只能在中間人3做我可以切換到它在中間人

layout.haml有所有的樣板,同時作爲指數的佈局。

現在我想的inner.haml佈局,將在頁面的其餘部分的工作,將繼承layout.haml(在,我不會重複樣板部分條款),將incude一些額外常見的樣式/腳本,一些通用標記,然後將重新放置yield塊。

目前我根本不知道從哪裏開始。我瞭解如何將inner.haml設置爲默認佈局,並將layout.haml設置爲「/」路線的佈局,但系統如何知道inner.haml實際上嵌套在layout.haml之內?

樣品設置

layout.haml

!!!5 
%html 
    %head 
    %script(src="HTML5 shiv") 
    %title 
     My Site 
     \| 
     = yield_content :title 
    = stylesheet_link_tag "site.css" 
    = yield_content :page_styles 
    %body 
    %div(role="main") 
     = yield_content :content 
    %script(src="jquery") 
    = yield_content :page_scripts 

index.html.haml

- content_for :title do 
    Index 
- content_for :page_styles do 
    = stylesheet_link_tag "index.css" 
- content_for :page_scripts do 
    %script(src="index.js") 
- content_for :content do 
    Cool banner here 

inner.haml

-# somehow inherits from/extends layout.haml 
- content_for :page_styles do 
    -# somehow I'm putting some common content and then reinclude the block from the specific page 
    = stylesheet_link_tag "inner.css" 
    = yield_content :page_styles 
-# same thing for page_scripts 
- content_fir :content do 
    -# again I define some common HTML, then include page's content 

回答

3

在3.0中,您將有index使用佈局inner這將wrap_layoutlayout

在2.0中,您需要分塊和content_for塊的組合。

+0

我已經在使用content_for和yield_content了。當說分數時,你的意思是我應該把所有的common_inner_styles,common_inner_scripts和common_inner_markup分成不同的部分?我會很好,但有可能把內容放入部分?我的意思是我想要爲所有內部頁面定製內容的一些常用包裝元素 – Guard 2012-03-31 09:24:40

0

乍一看,我很想用兩個模板做這件事。也許不是優雅或乾爽,但可以肯定地理解和容易稍後調整。例如。對於我們的網站,我們有一個front page layout和一個rest of the site layout。然後在每個MiddleMan源文件中我們聲明將使用哪個佈局(see example)。

所有這一切,我希望從一個HAML大師那裏學到一些對你的情況有一定魔力的東西!

+0

是的,絕對不會幹燥。我真的有 - 全站點模板(不是很小),然後對每個內部頁面使用一些更常見的標記。所以我絕對不會在這裏重複任何重複 – Guard 2012-03-30 21:28:24

+0

恐怕可能是這樣的...... – mm2001 2012-03-31 23:20:14