我有一个layout.html.erb文件,它应该作为所有页面的公共文件进行装饰,如下所示。
<%= render :partial => "layouts/header" %>
<%= render :partial => "layouts/leftsidemenu" %>
<body>
<%= @content_for_layout %>
</body>
<%= render :partial => "layouts/footer" %>我如何配置这个rails框架,以便我不想在所有页面中都包含layout.html.erb
<%= render :partial => "layouts/layout" %> 我需要配置文件来装饰,就像我们在Struts框架中使用sitemesh decorator.xml文件一样。
提前感谢Mahesh
发布于 2009-12-15 16:50:05
首先,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发布于 2009-12-15 15:51:26
看看structuring layouts的Rails文档,特别是yield和content_for标记。您还可以在控制器中使用layout指定布局,或者为应用程序控制器中的所有控制器指定默认布局。
https://stackoverflow.com/questions/1905773
复制相似问题