2009-12-15 84 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的布局,或者在应用程序控制器中为所有控制器指定布局。