Ruby 语言 Web 开发案例 Rails

Ruby阿木 发布于 1 天前 2 次阅读


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应用。希望本文能对您有所帮助。