Rails是基于Ruby的全栈的MVC的Web应用程序框架

欢迎使用 Rails

什么是 Rails?

Rails 是一个 Web 应用程序框架,它包含创建基于数据库的 Web 应用程序所需的一切,这些应用程序遵循模型-视图-控制器 (MVC)模式。

理解 MVC 模式是理解 Rails 的关键。MVC 将应用程序分为三层:模型、视图和控制器,每层都有特定的职责。

模型层

模型层代表领域模型(例如账户、产品、人员、帖子等),并封装了应用程序特有的业务逻辑。在 Rails 中,基于数据库的模型类派生自ActiveRecord::BaseActive Record 允许您将数据库行中的数据呈现为对象,并使用业务逻辑方法修饰这些数据对象。虽然大多数 Rails 模型都由数据库支持,但模型也可以是普通的Ruby 类,或者实现 Active Model 模块提供的一组接口的 Ruby 类。

视图层

视图层由“模板”组成,负责提供应用程序资源的适当表示。模板可以采用多种格式,但大多数视图模板都是嵌入了 Ruby 代码的 HTML(ERB 文件)。视图通常用于渲染以生成控制器响应或生成电子邮件正文。在 Rails 中,视图生成由 Action View 处理。

控制器层

控制器层负责处理传入的 HTTP 请求并提供合适的响应。通常,这意味着返回 HTML,但 Rails 控制器也可以生成 XML、JSON、PDF、移动端专用视图等等。控制器加载和操作模型,并渲染视图模板以生成合适的 HTTP 响应。在 Rails 中,传入的请求由 Action Dispatch 路由到合适的控制器,控制器类派生自 ActionController::Base。Action Dispatch 和 Action Controller在 Action Pack 中捆绑在一起。

框架和库

Active RecordActive ModelAction PackAction View 均可在 Rails 之外独立使用。

除此之外,Rails 还附带:

  • Action Mailer,一个用于生成和发送电子邮件的库
  • Action Mailbox,一个用于在 Rails 应用程序中接收电子邮件的库
  • Active Job,一个用于声明作业并使其在各种队列后端上运行的框架
  • Action Cable,一个用于将 WebSocket 与 Rails 应用程序集成的框架
  • Active Storage,一个用于将云端和本地文件附加到 Rails 应用程序的库
  • Action Text,一个用于处理富文本内容的库
  • Active Support,一组实用程序类和标准库扩展,它们对 Rails 非常有用,也可以在 Rails 之外独立使用

入门

  1. 如果您尚未安装 Rails,请在命令提示符下安装:
bash 复制代码
$ gem install rails
  1. 在命令提示符下,创建一个新的 Rails 应用程序:
bash 复制代码
$ rails new myapp

其中“myapp”是应用程序名称。

  1. 将目录更改为“myapp”并启动 Web 服务器:
bash 复制代码
$ cd myapp
$ bin/rails server

使用“--help”或“-h”命令运行以获取选项。

  1. 访问“http://localhost:3000”,您将看到包含您的 Rails 和 Ruby 版本的 Rails 启动屏幕。

  2. 按照指南开始开发您的应用程序。您可能会发现
    以下资源很有用:

Active Records 让建模变得简单

通过将业务逻辑封装在丰富的对象中,数据库变得栩栩如生。它能够对表之间的关联进行建模,在保存时提供回调,无缝加密敏感数据,并优雅地表达 SQL 查询。

ruby 复制代码
class Article < ApplicationRecord
  belongs_to :author, default: -> { Current.user }
  has_many   :comments

  has_one_attached :cover_image
  has_rich_text :content, encrypted: true
  enum status: %i[ drafted published ]

  scope :recent, -> { order(created_at: :desc).limit(25) }

  after_save_commit :deliver_later, if: :published?

  def byline
    "Written by #{author.name} on #{created_at.to_s(:short)}"
  end

  def deliver_later
    Article::DeliveryJob.perform_later(self)
  end
end

动作控制器处理所有请求

控制器将域模型公开到 Web,处理传入参数,设置缓存标头,并渲染模板,并以 HTML 或 JSON 格式响应。

ruby 复制代码
class ArticlesController < ApplicationController
  def index
    @articles = Article.recent
  end

  def show
    @article = Article.find(params[:id])
    fresh_when etag: @article
  end

  def create
    article = Article.create!(article_params)
    redirect_to article
  end

  private
    def article_params
      params.expect(article: [ :title, :content ])
    end
end

Action Views 混合了 Ruby 和 HTML

模板可以充分利用 Ruby 的多功能性,多余的代码被提取到辅助函数中,而领域模型则直接使用并与 HTML 交织在一起。

ruby 复制代码
<h1><%= @article.title %></h1>

<%= image_tag @article.cover_image.url %>

<p><%= @article.content %></p>

<%= link_to "Edit", edit_article_path(@article) if Current.user.admin? %>

动作调度路由 URL

使用路由域语言配置 URL 连接到控制器的方式。路由会将一组操作公开为资源:索引、显示、新建、创建、编辑、更新、销毁。

ruby 复制代码
Rails.application.routes.draw do
  resources :articles do    # /articles, /articles/1
    resources :comments     # /articles/1/comments, /comments/1
  end

  root to: "articles#index" # /
end

许可证

Ruby on Rails 基于 MIT 许可证 发布。

关于项目

Rails 是一个 Web 应用程序框架,它包含根据模型-视图-控制器 (MVC) 模式创建基于数据库的 Web 应用程序所需的一切。Rails 是一个全栈框架。它包含了在前端和后端构建出色的 Web 应用程序所需的所有工具。
MIT
Ruby
57,692
22000
2319
2008-04-11
2025-10-12

增长趋势 - stars