Ruby on Rails Web 开发案例详解
Ruby on Rails(简称Rails)是一个开源的Web应用框架,它使用Ruby语言编写,遵循MVC(模型-视图-控制器)设计模式。Rails以其简洁的语法、快速的开发速度和强大的功能而受到开发者的喜爱。本文将通过一个简单的Web开发案例,详细介绍Rails的基本用法和核心特性。
案例背景
假设我们需要开发一个简单的博客系统,该系统包括用户注册、登录、发表文章、查看文章等功能。
环境搭建
在开始开发之前,我们需要搭建一个Rails开发环境。以下是搭建步骤:
1. 安装Ruby:从官网(https://www.ruby-lang.org/zh_cn/downloads/)下载并安装Ruby。
2. 安装Rails:打开命令行,输入以下命令安装Rails:
ruby
gem install rails
3. 创建新项目:创建一个新的Rails项目,输入以下命令:
ruby
rails new blog
4. 进入项目目录:
ruby
cd blog
案例实现
1. 用户注册与登录
1.1 创建User模型
我们需要创建一个User模型来存储用户信息。在`app/models`目录下创建一个名为`user.rb`的文件,并添加以下代码:
ruby
class User < ApplicationRecord
has_secure_password
validates :username, presence: true, uniqueness: true
validates :email, presence: true, uniqueness: true
end
这里使用了`has_secure_password`方法来自动处理密码的加密和验证。
1.2 创建注册和登录页面
在`app/views/users`目录下创建`new.html.erb`和`login.html.erb`文件,分别用于注册和登录页面。
注册页面(`new.html.erb`):
erb
登录页面(`login.html.erb`):
erb
1.3 创建注册和登录控制器
在`app/controllers/users_controller.rb`文件中添加以下代码:
ruby
class UsersController < ApplicationController
def new
@user = User.new
end
def create
@user = User.new(user_params)
if @user.save
redirect_to root_path, notice: '注册成功'
else
render :new
end
end
def login
@user = User.find_by(email: params[:user][:email])
if @user && @user.authenticate(params[:user][:password])
session[:user_id] = @user.id
redirect_to root_path, notice: '登录成功'
else
redirect_to login_path, alert: '用户名或密码错误'
end
end
private
def user_params
params.require(:user).permit(:username, :email, :password, :password_confirmation)
end
end
1.4 创建路由
在`config/routes.rb`文件中添加以下路由:
ruby
Rails.application.routes.draw do
resources :users
get 'login', to: 'userslogin'
get 'logout', to: 'sessionsdestroy'
end
2. 发表文章
2.1 创建Article模型
在`app/models`目录下创建一个名为`article.rb`的文件,并添加以下代码:
ruby
class Article < ApplicationRecord
belongs_to :user
validates :title, presence: true
validates :content, presence: true
end
2.2 创建文章控制器
在`app/controllers/articles_controller.rb`文件中添加以下代码:
ruby
class ArticlesController < ApplicationController
before_action :authenticate_user!, except: [:index, :show]
def index
@articles = Article.all
end
def show
@article = Article.find(params[:id])
end
def new
@article = Article.new
end
def create
@article = current_user.articles.build(article_params)
if @article.save
redirect_to @article, notice: '文章发表成功'
else
render :new
end
end
private
def article_params
params.require(:article).permit(:title, :content)
end
end
2.3 创建文章页面
在`app/views/articles`目录下创建`index.html.erb`、`show.html.erb`、`new.html.erb`文件,分别用于文章列表、文章详情和发表文章页面。
文章列表页面(`index.html.erb`):
erb
文章列表
文章详情页面(`show.html.erb`):
erb
发表文章页面(`new.html.erb`):
erb
总结
本文通过一个简单的博客系统案例,介绍了Ruby on Rails的基本用法和核心特性。在实际开发中,Rails提供了丰富的功能和插件,可以帮助开发者快速构建高质量的Web应用。希望本文能对您有所帮助。
Comments NOTHING