📜  Ruby on Rails教程(1)

📅  最后修改于: 2023-12-03 15:34:45.610000             🧑  作者: Mango

Ruby on Rails教程

Ruby on Rails是一个Web开发框架,使用Ruby编程语言编写。它是一个开源项目,由David Heinemeier Hansson于2004年创建。Rails以简洁、可读性强的代码和快速开发著称。

安装Rails

要使用Rails,需要在计算机上安装Ruby和Rails。这里提供两种不同的方式:

1. 使用Ruby Version Manager(RVM)

RVM官网

# 安装RVM
curl -sSL https://get.rvm.io | bash -s stable

# 安装最新版的Ruby
rvm install ruby

# 安装最新版的Rails
gem install rails

2. 使用RubyInstaller(仅适用于Windows系统)

RubyInstaller官网

安装过程中选择安装Ruby和Rails。

创建Rails应用程序

创建一个新的Rails应用程序很简单,只需在终端中输入以下命令:

rails new myapp

这会在当前目录中创建一个名为“myapp”的新应用程序。该应用程序包含各种文件和目录,用于支持开发Web应用程序。

Rails的核心概念

Rails具有几个核心概念,包括:

  • 路由
  • 控制器
  • 模型
  • 视图
  • 数据库迁移
  • 表单和验证

这些核心概念是开发Rails应用程序的基础,并且提供了许多有用的内置功能,使Web开发变得更加容易和流畅。

路由

路由是指将URL映射到控制器操作的过程。在Rails中,路由通常是在文件config/routes.rb中定义的。例如:

Rails.application.routes.draw do
  get 'welcome/index'

  resources :articles

  root 'welcome#index'
end

这个例子中,有三个路由:

  1. get 'welcome/index'将/welcome/index URL映射到WelcomeController的index操作。
  2. resources :articles将/articles URL映射到ArticlesController的各种操作。
  3. root 'welcome#index'将根URL映射到WelcomeController的index操作。

控制器

控制器是指处理Web请求并生成响应的代码。在Rails中,控制器通常是在app/controllers目录中定义的。例如:

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'
    end
  end

  private
    def article_params
      params.require(:article).permit(:title, :text)
    end
end

这个例子中,有四个控制器操作:

  1. index操作获取所有文章并将它们分配给@articles变量,然后使用app/views/articles/index.html.erb视图呈现结果。
  2. show操作获取指定ID的文章并将其分配给@article变量,然后使用app/views/articles/show.html.erb视图呈现结果。
  3. new操作创建一个新的Article对象并将其分配给@article变量,然后使用app/views/articles/new.html.erb视图呈现结果。
  4. create操作创建一个新的Article对象并尝试将其保存到数据库中。如果保存成功,则重定向到刚刚创建的文章页面;否则,返回与new操作相同的视图以显示错误消息。

模型

模型是指处理与数据库交互的代码。在Rails中,模型通常是在app/models目录中定义的。例如:

class Article < ActiveRecord::Base
  validates :title, presence: true,
                    length: { minimum: 5 }
end

这个例子中,有一个名为“Article”的模型,它具有一个名为“title”的属性。通过调用validates方法,可以定义验证规则。在这种情况下,我们使用presence: true验证确保文章标题存在,并使用length规则验证标题至少为5个字符长。

视图

视图是指呈现Web响应的代码。在Rails中,视图通常是在app/views目录中定义的,并使用ERB模板语言编写。例如:

<!-- app/views/articles/show.html.erb -->
<h1><%= @article.title %></h1>
<p><%= @article.text %></p>

这个例子中,我们使用ERB模板语言来呈现标题和正文的内容。

数据库迁移

数据库迁移是指在代码中管理数据库架构的过程。在Rails中,数据库迁移通常是在db/migrate目录中定义的,并使用ActiveRecord模型来进行管理。例如:

class CreateArticles < ActiveRecord::Migration[5.0]
  def change
    create_table :articles do |t|
      t.string :title
      t.text :text

      t.timestamps
    end
  end
end

这个例子中,我们创建了一个使用ActiveRecord模型的数据库迁移,创建了一个名为“articles”的表,并定义了两个列:“title”和“text”。

表单和验证

表单和验证是指在Web应用程序中收集和验证用户输入的过程。在Rails中,可以使用表单帮助器和模型验证来实现这一点。例如:

<!-- app/views/articles/new.html.erb -->
<%= form_for :article, url: articles_path do |f| %>
  <p>
    <%= f.label :title %><br>
    <%= f.text_field :title %>
  </p>

  <p>
    <%= f.label :text %><br>
    <%= f.text_area :text %>
  </p>

  <p>
    <%= f.submit 'Create' %>
  </p>
<% end %>

在这个例子中,我们使用form_for表单帮助器来创建一个新的Article对象,然后使用text_field和text_area帮助器来创建输入字段。最后,我们使用submit按钮帮助器来创建提交按钮。

使用这些技术,我们可以非常方便地创建复杂的Web应用程序,并确保它们安全、可维护、可扩展。如果您想了解更多,可以查阅Rails官方文档。