【发布时间】:2010-07-26 03:54:26
【问题描述】:
好的,所以我有一个小项目,我制作了两个不同的脚手架。在 layouts 目录中,有两个不同的 layout.html.erb 文件。
我的问题是如何将其压缩为两个脚手架视图共享的一个主要布局文件。
基本上我这样做的目的是让我只需将导航栏和标题以及其他类似的东西都放在一个地方。
【问题讨论】:
好的,所以我有一个小项目,我制作了两个不同的脚手架。在 layouts 目录中,有两个不同的 layout.html.erb 文件。
我的问题是如何将其压缩为两个脚手架视图共享的一个主要布局文件。
基本上我这样做的目的是让我只需将导航栏和标题以及其他类似的东西都放在一个地方。
【问题讨论】:
如果您将布局文件命名为 application.html.erb,那么它将是默认布局文件。如果您使用与控制器相同的名称指定布局文件,则会覆盖默认布局。
来自 Rails 指南:
要查找当前布局,Rails 首先在其中查找文件 具有相同基础的应用程序/视图/布局 名称为控制器。例如, 从渲染动作 PhotosController 类将使用 app/views/layouts/photos.html.erb(或 app/views/layouts/photos.builder)。如果 没有这种特定于控制器的 布局,Rails 将使用 应用程序/视图/布局/application.html.erb 或者 应用程序/视图/布局/application.builder。 如果没有 .erb 布局,Rails 将 如果存在,请使用 .builder 布局。 Rails 还提供了几种方法 更精确地分配特定布局 到各个控制器和操作。
来源:http://guides.rails.info/layouts_and_rendering.html
编辑:
我应该补充一点,您可以在应用程序控制器中指定任何布局作为默认布局:
class ApplicationController < ActionController::Base
layout 'some_layout_name'
end
这将覆盖 rails 自动执行的名称匹配。
我希望这会有所帮助!
【讨论】:
你可以在你的 layouts 目录中拥有一个application.html.erb,它将被所有视图共享
【讨论】: