22 部分视图和布局
在 Ruby on Rails 中,视图和模板的设计是构建用户界面的重要组成部分。在前一篇中,我们介绍了如何使用 ERB 模板引擎来渲染视图。在本篇中,我们将深入探讨如何创建部分视图和布局,以提高代码的重用性和可维护性。
什么是部分视图?
部分视图(Partial)是用于将视图划分为更小、更可重用组件的视图。部分视图的主要目的是减少重复代码,并使代码结构更加清晰。你可以将一些可以共享的元素提取到单独的部分视图中,从而在不同的视图中重用它们。
创建部分视图
要创建部分视图,我们首先需要在视图目录中创建一个以下划线开头的文件,例如 _form.html.erb
。下面是一个创建部分视图的步骤:
创建部分视图文件
在app/views/posts/
目录下创建一个文件_form.html.erb
,这个部分视图将用于显示一个表单。1
2
3
4
5
6
7
8
9
10
11
12
13<div class="post-form">
<%= form_with model: @post do |form| %>
<div class="form-group">
<%= form.label :title %>
<%= form.text_field :title, class: "form-control" %>
</div>
<div class="form-group">
<%= form.label :content %>
<%= form.text_area :content, class: "form-control" %>
</div>
<%= form.submit "提交", class: "btn btn-primary" %>
<% end %>
</div>在主视图中渲染部分视图
在app/views/posts/new.html.erb
和app/views/posts/edit.html.erb
中,我们可以使用render
方法来引入这个部分视图,示例如下:1
2<h1>创建新帖子</h1>
<%= render 'form' %>1
2<h1>编辑帖子</h1>
<%= render 'form' %>
这种方式使得我们可以复用相同的表单代码,而不需要在每个视图中重复书写。
布局(Layouts)
布局是指在额外的视图外部添加的结构和样式。布局可以定义整个应用程序的页面框架,例如头部、脚部和导航菜单。每个视图都可以系统地使用相同的布局,从而提供一致的用户体验。
创建布局
在 Rails 中,布局文件通常位于 app/views/layouts
目录下。默认的布局文件是 application.html.erb
。下面是一个简单的布局示例:
1 |
|
在这个布局中,我们使用了 yield
关键字来指示在布局中插入的视图内容。每个视图都将会在 <main>
标签内展示。
使用布局
默认情况下,Rails 会使用 application.html.erb
作为所有视图的布局文件。如果你需要为特定的视图使用不同的布局,可以在控制器中指定。例如:
1 | class PostsController < ApplicationController |
在这个例子中,show
动作将使用名为 special_layout.html.erb
的布局文件,而其他动作将继续使用默认的布局文件。
案例结合
假设我们已经创建了一个 Posts
控制器,并在控制器中定义了 new
和 edit
方法,来分别处理新帖子创建和帖子编辑的请求。现在,我们可以结合上述部分视图和布局的使用,来实现一个完整的功能。
1 | class PostsController < ApplicationController |
在 new.html.erb
和 edit.html.erb
中,我们分别渲染了 _form.html.erb
部分视图,使用布局来提供页面的整体结构,从而实现了代码的组织和界面的一致性。
小结
在这一节中,我们探讨了如何使用部分视图和布局来构建更灵活、可重用的视图。在实际开发中,这种结构将有助于减少代码重复,提高维护性。在下一篇教程中,我们将继续研究如何处理表单,创建用户输入的表单以支持动态数据输入。
22 部分视图和布局