引言
在Web开发的世界里,Ruby on Rails以其简洁的语法和强大的MVC(模型-视图-控制器)架构而闻名。MVC是一种设计模式,它将应用程序分为三个主要部分,每个部分负责不同的功能。本文将带你从零开始,逐步了解Ruby MVC框架,并通过实战代码来加深理解。
第一章:Ruby和Rails简介
1.1 Ruby语言
Ruby是一种优雅、简单、实用的编程语言。它的设计哲学是“一次编写,到处运行”,这意味着用Ruby编写的代码可以在多种平台上运行。
1.2 Rails框架
Rails是一个建立在Ruby语言之上的开源Web应用框架。它遵循MVC架构,提供了丰富的功能,如数据库交互、表单验证、缓存等。
第二章:搭建开发环境
2.1 安装Ruby
首先,你需要安装Ruby。可以从官网下载安装包,或者使用包管理器。
# 使用RVM安装Ruby
rvm install 2.7.2
rvm use 2.7.2 --default
2.2 安装Rails
安装Rails之前,确保你已经安装了Ruby。然后,使用以下命令安装Rails:
gem install rails
2.3 创建新项目
使用以下命令创建一个新的Rails项目:
rails new myapp
cd myapp
第三章:Rails基础结构
3.1 目录结构
Rails项目通常具有以下目录结构:
myapp/
|-- app/
| |-- controllers/
| |-- helpers/
| |-- models/
| |-- views/
| `-- assets/
|-- config/
| |-- environment/
| |-- initializers/
| |-- locales/
| |-- migrations/
| `-- routes.rb
|-- db/
| |-- schema.rb
| `-- structure.sql
|-- Gemfile
|-- Gemfile.lock
|-- README.md
`-- config.ru
3.2 模型(Model)
模型是Rails中的数据层,负责与数据库交互。你可以使用ActiveRecord来定义模型。
# app/models/user.rb
class User < ApplicationRecord
has_secure_password
end
3.3 控制器(Controller)
控制器负责处理用户请求,并调用相应的模型和视图。
# app/controllers/users_controller.rb
class UsersController < ApplicationController
def index
@users = User.all
end
def show
@user = User.find(params[:id])
end
end
3.4 视图(View)
视图负责显示数据。Rails使用ERB(嵌入式Ruby)作为模板语言。
<!-- app/views/users/index.html.erb -->
<h1>Users</h1>
<ul>
<% @users.each do |user| %>
<li><%= user.name %></li>
<% end %>
</ul>
第四章:Rails路由
Rails使用路由来映射请求到控制器和动作。
# config/routes.rb
Rails.application.routes.draw do
resources :users
end
第五章:实战演练
5.1 创建用户注册功能
- 创建用户模型:
# app/models/user.rb
class User < ApplicationRecord
has_secure_password
end
- 创建用户控制器:
# app/controllers/users_controller.rb
class UsersController < ApplicationController
def new
@user = User.new
end
def create
@user = User.new(user_params)
if @user.save
redirect_to root_path, notice: 'User was successfully created.'
else
render :new
end
end
private
def user_params
params.require(:user).permit(:name, :email, :password, :password_confirmation)
end
end
- 创建注册视图:
<!-- app/views/users/new.html.erb -->
<h1>Register</h1>
<%= form_for @user do |f| %>
<%= f.label :name %>
<%= f.text_field :name %>
<%= f.label :email %>
<%= f.email_field :email %>
<%= f.label :password %>
<%= f.password_field :password %>
<%= f.label :password_confirmation %>
<%= f.password_field :password_confirmation %>
<%= f.submit "Register" %>
<% end %>
5.2 用户登录功能
- 创建会话控制器:
# app/controllers/sessions_controller.rb
class SessionsController < ApplicationController
def new
end
def create
user = User.find_by(email: params[:email])
if user&.authenticate(params[:password])
session[:user_id] = user.id
redirect_to root_path, notice: 'Logged in successfully.'
else
flash.now[:alert] = 'Email or password is invalid'
render :new
end
end
def destroy
session[:user_id] = nil
redirect_to root_path, notice: 'Logged out successfully.'
end
end
- 创建登录视图:
<!-- app/views/sessions/new.html.erb -->
<h1>Login</h1>
<%= form_for(:session) do |f| %>
<%= f.label :email %>
<%= f.email_field :email %>
<%= f.label :password %>
<%= f.password_field :password %>
<%= f.submit "Login" %>
<% end %>
结语
通过本文的介绍,你现在已经对Ruby MVC框架有了初步的了解。接下来,你可以通过实战演练来加深对Rails的理解。祝你学习愉快!
