快速上手Ruby on Rails:初学者友好的一站式指南 – wiki词典


快速上手Ruby on Rails:初学者友好的一站式指南

Ruby on Rails(简称Rails)是一个功能强大且极受欢迎的Web应用框架,它基于Ruby语言构建。Rails以其“约定优于配置”(Convention over Configuration)和“不要重复自己”(Don’t Repeat Yourself)的哲学而闻名,旨在让开发者能够快速、高效地构建出强大的Web应用。本指南将带你从零开始,一步步进入Rails的世界。


目录

  1. 什么是Ruby on Rails?
  2. 环境准备与安装
  3. 创建你的第一个Rails应用
  4. Rails核心概念:构建一个简单的博客
  5. 常用工具与下一步
  6. 结语

1. 什么是Ruby on Rails?

Rails是一个基于模型-视图-控制器(MVC)架构模式的开源Web框架。

  • 模型(Model): 负责与数据库交互,处理业务逻辑和数据验证。
  • 视图(View): 负责生成用户界面,将数据显示给用户。通常是HTML、CSS和JavaScript的组合。
  • 控制器(Controller): 作为模型和视图之间的协调者,接收用户请求,调用相应的模型逻辑,并将结果传递给视图。

Rails的哲学使得开发者可以专注于业务逻辑,而不是繁琐的配置。它内置了大量工具和库,覆盖了从数据库迁移到发送邮件等Web开发的方方面面。

2. 环境准备与安装

在开始之前,你需要搭建好开发环境。

第一步:安装Ruby

Rails是基于Ruby的,所以首先需要安装Ruby。强烈建议使用版本管理工具来安装,这能让你轻松切换不同项目的Ruby版本。

  • 对于macOS或Linux: 推荐使用 rbenvRVM
    “`bash
    # 使用 rbenv (推荐)
    git clone https://github.com/rbenv/rbenv.git ~/.rbenv
    echo ‘export PATH=”$HOME/.rbenv/bin:$PATH”‘ >> ~/.bashrc # 或 ~/.zshrc
    echo ‘eval “$(rbenv init -)”‘ >> ~/.bashrc # 或 ~/.zshrc
    source ~/.bashrc # 或 source ~/.zshrc

    git clone https://github.com/rbenv/ruby-build.git “$(rbenv root)”/plugins/ruby-build

    安装指定版本的Ruby

    rbenv install 3.2.2
    rbenv global 3.2.2
    ``
    * **对于Windows**: 可以使用
    RubyInstaller`,它提供了一个完整的Ruby开发环境。

安装后,通过 ruby -v 确认版本。

第二步:安装Rails

安装好Ruby后,就可以通过Ruby的包管理器RubyGems来安装Rails了。

bash
gem install rails

安装完成后,通过 rails -v 确认Rails版本。

第三步:安装数据库

Rails默认使用SQLite3,这是一个轻量级的数据库,无需单独安装服务器,非常适合开发环境。如果想使用更强大的数据库,如PostgreSQL或MySQL,则需要单独安装它们。

3. 创建你的第一个Rails应用

环境就绪,让我们来创建第一个应用!

第一步:生成项目

打开终端,运行以下命令:

bash
rails new my_first_app

这个命令会创建一个名为 my_first_app 的文件夹,并自动安装所有必需的依赖(Gems)。

进入项目目录:
bash
cd my_first_app

你会看到一个标准的Rails项目结构:
* app/: 包含模型、视图、控制器和静态资源,是你的主要工作目录。
* config/: 存放应用的配置文件,如路由(routes.rb)。
* db/: 包含数据库结构定义(schema)和迁移文件(migrations)。
* Gemfile: 定义项目依赖的Ruby库(Gems)。

第二步:启动服务器

Rails内置了一个Web服务器。在项目根目录下运行:

“`bash
bin/rails server

或者简写

rails s

“`

现在,打开浏览器访问 http://127.0.0.1:3000http://localhost:3000。你会看到Rails的欢迎页面,这表示你的应用已经成功运行了!

4. Rails核心概念:构建一个简单的博客

理论不如实践。让我们通过构建一个简单的博客来掌握Rails的MVC流程。这个博客将支持文章(Articles)的创建、查看、编辑和删除(CRUD)。

4.1 创建模型(Model)

我们首先需要一个Article模型来表示一篇文章,它应该有标题(title)和内容(body)。

运行Rails的代码生成器:
bash
bin/rails generate model Article title:string body:text

这个命令会做几件事:
1. 创建一个app/models/article.rb文件,这是Article模型类。
2. 创建一个db/migrate/目录下的迁移文件。迁移文件像数据库的版本控制,用于描述数据库表的变更。

打开新生成的迁移文件,它看起来像这样:
“`ruby
class CreateArticles < ActiveRecord::Migration[7.0]
def change
create_table :articles do |t|
t.string :title
t.text :body

  t.timestamps
end

end
end
“`

现在,运行迁移来让数据库真正创建articles表:
bash
bin/rails db:migrate

4.2 设置路由(Routes)

当用户请求一个URL时,Rails的路由需要知道该将请求分派给哪个控制器的哪个动作。打开 config/routes.rb 文件,添加一行代码:

“`ruby
Rails.application.routes.draw do
# 将根路径’/’指向articles控制器的index动作
root “articles#index”

# 这行代码会自动为articles生成所有标准的RESTful路由
resources :articles
end
``resources :articles是一个强大的助手,它会自动创建用于浏览、显示、新建、编辑、更新和删除文章的所有路由。你可以通过运行bin/rails routes` 查看所有已定义的路由。

4.3 创建控制器(Controller)

接下来,创建ArticlesController来处理与文章相关的逻辑。

bash
bin/rails generate controller Articles

这会生成 app/controllers/articles_controller.rb。现在我们来填充它:

“`ruby
class ArticlesController < ApplicationController
# 显示所有文章
def index
@articles = Article.all
end

# 显示单篇文章
def show
@article = Article.find(params[:id])
end

# 显示新建文章的表单
def new
@article = Article.new
end

# 创建新文章
def create
@article = Article.new(article_params)

if @article.save
  redirect_to @article
else
  render :new, status: :unprocessable_entity
end

end

# 显示编辑文章的表单
def edit
@article = Article.find(params[:id])
end

# 更新文章
def update
@article = Article.find(params[:id])

if @article.update(article_params)
  redirect_to @article
else
  render :edit, status: :unprocessable_entity
end

end

# 删除文章
def destroy
@article = Article.find(params[:id])
@article.destroy

redirect_to root_path, status: :see_other

end

private
# 使用Strong Parameters来防止恶意用户提交额外的表单字段
def article_params
params.require(:article).permit(:title, :body)
end
end
``
**注意**:
@开头的变量(如@article`)是实例变量,它们可以在对应的视图文件中被访问。

4.4 创建视图(Views)

视图负责展示数据。我们需要为控制器的每个动作创建对应的ERB(Embedded Ruby)文件。

  1. 显示所有文章 (app/views/articles/index.html.erb)
    “`erb

    文章列表

    <%= link_to “新建文章”, new_article_path %>

      <% @articles.each do |article| %>

    • <%= link_to article.title, article %>
    • <% end %>

    “`

  2. 显示单篇文章 (app/views/articles/show.html.erb)
    “`erb

    <%= @article.title %>

    <%= @article.body %>

    <%= link_to “编辑”, edit_article_path(@article) %> |
    <%= link_to “返回列表”, root_path %> |
    <%= link_to “删除”, article_path(@article), data: {
    turbo_method: :delete,
    turbo_confirm: “确定要删除吗?”
    } %>

    ``
    *
    turbo_method: :delete` 是Rails 7+中用于实现删除功能的方式。*

  3. 新建/编辑表单 (抽取为局部视图 app/views/articles/_form.html.erb)
    为了遵循DRY原则,我们将新建和编辑共用的表单抽取出来。

    “`erb
    <%= form_with model: article do |form| %>

    <%= form.label :title %>
    <%= form.text_field :title %>

    <%= form.label :body %>
    <%= form.text_area :body %>

    <%= form.submit %>

    <% end %>
    “`

  4. 新建文章页面 (app/views/articles/new.html.erb)
    erb
    <h1>新建文章</h1>
    <%= render "form", article: @article %>

  5. 编辑文章页面 (app/views/articles/edit.html.erb)
    erb
    <h1>编辑文章</h1>
    <%= render "form", article: @article %>

现在,再次启动服务器 (bin/rails server),访问 http://localhost:3000。你应该能看到一个功能完整的博客应用了!尝试创建、查看、编辑和删除文章,体验一下完整的MVC流程。

5. 常用工具与下一步

  • Rails Console: 一个强大的交互式命令行工具。通过 bin/rails console(或 rails c)启动,你可以在这里直接与你的应用代码和数据库交互。例如,Article.all可以查询所有文章。
  • Gems: Rails的生态系统核心是Gems。你可以在 Gemfile 中声明你需要的库,然后运行 bundle install 来安装它们。一些流行的Gems包括:
    • Devise: 用于快速实现用户认证(注册、登录)。
    • Pundit: 用于处理授权和访问控制。
    • Sidekiq: 用于处理后台任务。
  • 学习资源:

6. 结语

恭喜你!你已经成功构建了第一个Rails应用,并对Rails的MVC架构有了初步的了解。Rails的强大之处在于其约定和丰富的生态系统,它能让你以极高的效率将想法变为现实。继续探索,享受用Rails创造的乐趣吧!

滚动至顶部