2009-12-15 86 views
0

我有一個layout.html.erb文件,它應該作爲所有頁面的通用文件進行裝飾,如下所示。紅寶石模板erb

<%= render :partial => "layouts/header" %> 
    <%= render :partial => "layouts/leftsidemenu" %> 
    <body> 
    <%= @content_for_layout %> 
    </body> 
<%= render :partial => "layouts/footer" %> 

如何配置,這樣,所以我不希望包括在所有頁面layout.html.erb作爲

<%= render :partial => "layouts/layout" %> 

我需要配置文件來裝飾,我們在做這個Rails框架Struts框架使用sitemesh decorator.xml文件。

在此先感謝 馬赫什

回答

2

首先,Rails應用程序的默認佈局是<rails_app>/app/views/layouts/application.html.erb,因爲您的所有控制器都從ApplicationController繼承(請參閱名稱,因爲約定Rails使用與控制器具有相同基本名稱的佈局或父控制器的名稱等上)。

其次,你的佈局應該是這個樣子的是:

<%= render :partial => "header" %> 
<%= render :partial => "leftsidemenu" %> 
<body> 
    <%= yield %> 
</body> 
<%= render :partial => "footer" %> 

甚至粘貼頁眉和頁腳到此佈局的內容。有關佈局的更多信息,請參閱this guide

如果你想改變頁面的某些方面,例如標題,那麼你就可以佈局也這樣做:

# header.html.erb 
<head> 
    <title> 
    <%= yield(:title) of "Default title" %> 
    </title> 
</head> 

# page.html.erb 
<% content_for :title do %> 
    Specific title 
<% end %> 

Page content 

如果你想使用的佈局,從不同的文件,那麼你可以做,使方式:

# ApplicationController.rb 

class ApplicationController < ActionController::Base 
    # ... 
    layout 'your_layout' # file in app/views/layouts 
    # ... 
end 
1

看看Rails的文檔爲structuring layouts,尤其是yieldcontent_for標籤。您還可以在控制器中指定layout的佈局,或者在應用程序控制器中爲所有控制器指定佈局。