10 Rails的MVC架构之MVC架构概述

在上一章中,我们成功运行了我们的第一个Rails应用程序,体验了Rails框架带来的便利。这一章我们将深入探讨Rails中的核心概念之一:MVC架构。

MVC架构概述

MVC代表的是“模型-视图-控制器”(Model-View-Controller),是一个设计模式,用于组织代码,使其更加易于维护和扩展。在Rails中,这种架构将应用程序的不同部分分离,帮助开发者更清晰地理解和管理代码。我们来详细了解每个部分的职责。

模型(Model)

模型是应用程序中数据的抽象和业务逻辑的代表。它负责与数据库交互,封装应用程序的核心数据以及实现数据验证和业务规则。在Rails中,模型通常对应于数据库中的表。在典型的Rails应用中,我们可能会有一个User模型来表示用户数据。

1
2
3
4
class User < ApplicationRecord
validates :name, presence: true
validates :email, presence: true, uniqueness: true
end

在这个例子中,User模型确保每个用户都有一个名称和唯一的电子邮件地址。通过使用ActiveRecord这一ORM(对象关系映射)库,开发者可以方便地与数据库进行交互。

视图(View)

视图是应用程序的用户界面部分,负责将模型数据呈现给用户。在Rails中,视图通常使用ERB(Embedded Ruby)模板引擎来生成动态HTML内容。视图将数据和HTML结构结合起来,最终呈现出来。

1
<h1>欢迎回来,<%= @user.name %>!</h1>

在这个ERB视图中,我们展示了用户的名称,这是从User模型中提取出来的。视图应该尽量保持简单,只负责数据显示和用户界面的呈现,而不包含复杂的业务逻辑。

控制器(Controller)

控制器是MVC架构中连接模型和视图的桥梁。它接收用户的输入,处理相应的业务逻辑,随后选择适当的视图进行呈现。控制器负责协调模型和视图之间的交互。

下面是一个简单的控制器示例,代表一个用户的控制器:

1
2
3
4
5
class UsersController < ApplicationController
def show
@user = User.find(params[:id])
end
end

在这个控制器中,show方法获取了一个特定的用户,并将其保存在实例变量@user中,以便在视图中使用。

三者的协作

MVC架构的核心在于三者之间的协作。控制器接收来自用户的请求,查询模型获得数据,并将数据传递给视图。视图将模型数据展示给用户,并能接收用户的输入(比如表单提交),这些输入会再次通过控制器返回模型中进行处理。

案例分析

假设我们有一个简单的博客应用,用户可以创建、查看和删除文章。我们将用MVC架构来处理这个功能。

  1. 模型:创建一个Post模型用于代表文章数据。
1
2
3
4
class Post < ApplicationRecord
validates :title, presence: true
validates :content, presence: true
end
  1. 控制器:创建PostsController来处理与文章相关的操作。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
class PostsController < ApplicationController
def index
@posts = Post.all
end

def show
@post = Post.find(params[:id])
end

def new
@post = Post.new
end

def create
@post = Post.new(post_params)
if @post.save
redirect_to @post
else
render :new
end
end

private

def post_params
params.require(:post).permit(:title, :content)
end
end
  1. 视图:创建相应的视图文件来显示和操作文章。

index.html.erb视图文件展示所有文章:

1
2
3
4
<h1>所有文章</h1>
<% @posts.each do |post| %>
<h2><%= link_to post.title, post %></h2>
<% end %>

show.html.erb视图文件展示单个文章的内容:

1
2
3
<h1><%= @post.title %></h1>
<p><%= @post.content %></p>
<%= link_to '返回', posts_path %>

结论

在这一章中,我们概述了Rails的MVC架构,深入理解了模型、视图和控制器的职责,以及它们之间如何协作来构建一个功能丰富的应用。在接下来的章节中,我们将更深入地探讨模型的职责,了解如何更有效地使用ActiveRecord进行数据库交互和数据管理。通过继续学习,我们将能够扩展我们的知识,构建出更复杂的Rails应用程序。

10 Rails的MVC架构之MVC架构概述

https://zglg.work/rails-zero/10/

作者

AI免费学习网(郭震)

发布于

2024-08-15

更新于

2024-08-16

许可协议

分享转发

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论