Rails 布局

2024 年 12 月 18 日 | 2 分钟阅读

在 Rails 中,布局是将各个部分(例如页眉、页脚、菜单等)组合在一起以构成完整视图的片段。一个应用程序可以拥有任意数量的布局。Rails 使用约定优于配置的方式,自动将布局与具有相同名称的相应控制器配对。

Rails 布局基本上遵循“不要重复自己”原则 (DRY)。

在 Rails 中,布局默认启用。每当您生成一个新的 Rails 应用程序时,都会自动在 app/views/layouts 中为您生成一个布局。

首先我们需要定义一个布局模板,然后定义控制器知道布局存在的路径。


创建响应

从控制器的角度来看,有三种创建 HTTP 响应的方法

  • 调用 render 以创建一个完整的响应并发送回浏览器
  • 调用 redirect_to 以将 HTTP 重定向状态代码发送到浏览器
  • 调用 head 以创建一个响应并发送回浏览器

yield 语句的重要性

Rails 中的 yield 语句决定了在布局中呈现操作内容的何处。如果布局中没有 yield 语句,则将呈现布局文件本身,但操作模板中的其他内容将无法正确放置在布局中。

因此,必须在布局文件中添加 yield 语句。


Rails 布局和模板之间的关系

当在应用程序中发出请求时,会发生以下过程

  • 首先,Rails 会在控制器操作中查找与 render 方法对应的模板。
  • 然后找到要使用的正确布局。
  • 它使用操作模板来生成特定于操作的内容。
  • 最后,它查找布局的 yield 语句并将操作的模板插入到这里。

查找正确的布局

Rails 会在 app/layouts 目录中搜索与控制器名称同名的布局。

例如,如果您有一个名为 GioController 的控制器,那么 rails 将搜索 layouts/gio.html.erb 布局。如果不存在同名的布局,则它将使用默认布局 app/views/layouts/application.html.erb

示例

之前我们做了一个例子,输出如下

Ruby on rails Layout 1

现在在这个应用程序中,我们将插入一个布局文件。

步骤 1 转到 app/layouts/application.html.erb 文件,删除所有代码并编写以下代码。

Ruby on rails Layout 2

步骤 2 转到 app/layouts 目录并创建 lay.html.erb 文件。

步骤 3 通过编写以下代码将其插入到 app/controllers/users_controller.rb 文件中。

步骤 4 在浏览器上运行它。

Ruby on rails Layout 3

下载

下载此示例