Rails 手册 | 02 - Rails Quickstart

80 阅读4分钟

一、创建第一个 Rails 应用

Rails 框架提供了 rails 命令工具集,可以通过创建运行 Rails 应用。

图片.png

Rails 默认使用 Sqlite3 数据库,使用 MySQL 创建数据库需要添加 -d 参数。在命令行执行如下命令创建一个以 MySQL 数据库为基础的 Rails 应用

rails new myfirstapp -d=mysql

图片.png

图片.png

Rails 创建应用过程中会自动创建各种文件夹以及下载相应的依赖,所以创建时会花费几分钟的时间。

应用创建完成之后使用 RubyMine IDE 打开 myfirstapp 项目。

图片.png

Rails 遵循习惯大于配置的原则,当 Rails 程序启动时会寻找项目根路径下的 config 目录下的 database.yml 文件,根据该文件中提供的数据库连接信息来连接数据库。

图片.png

因此在项目创建完成后的第一件事就是修改相应的数据库连接,避免 Rails 应用时报错。

二、启动 Rails 应用

使用 RubyMine 启动 Rails 应用需要在 EditConfiguration 添加一个 Rails 的配置,直接点击 Apply 即可。

图片.png

点击 myfirstapp 即可成功启动 Rails 应用

图片.png

Rails 应用默认启动在 3000 端口,可以通过浏览器查看项目主页 http://localhost:3000

图片.png

除此之外还可以使用命令启动项目,在项目目录下执行命令

rails server

三、代码生成器

自动生成 controller

Rails 内置了代码生成器,可以通过 rails generate 生成代码。

图片.png

我们使用代码生成器来生成一个 Controller 和一个 Action,来看看 Rail 应用中文件的命名规则

rails generate controller MyZulu say_hi

图片.png

执行上述命令会为 MyZulu 控制器创建相应的文件,为每一个方法创建相关的视图。

根据运行结果看确定该命令在 app/view 中创建了 my_zulu 文件夹,同时创建了控制器文件 my_zulu_controller.rb、控制器测试文件 my_zulu_controller_test.rb、视图文件 say_hi.html.erb 以及辅助文件 my_zulu_helper.rb

接着我们在浏览器中访问 http://localhost:3000/my_zulu/say_hi 会得到如下页面。

图片.png

这个页面是自动生成的页面,该页面的位置在 app/view/my_zulu

图片.png

修改页面内容为:

<p>Hi, Ruby on Rails</p>

保存内容后,刷新浏览器页面,可以看到页面显示的内容也随之改变。

图片.png

请求的流程如下:

图片.png

Rails 中的控制器和模型的类名以及视图名都有一定的命名规则,只要符合这个规则,Rails 就可以自动将它们关联到一起。

自动生成 CRUD 代码

rails generate 不仅可以生成 controller 层代码,还可以通过添加 scaffold 参数生成 MVC 三层结构的代码。

执行如下命令,创建 Article 的 MVC 三层代码,实现 Article 的 CRUD。

rails generate scaffold Article title:string context:text

图片.png

上述命令会创建 article 表的迁移代码,接着执行数据库迁移命令就可以在数据库中创建 articles 表。

rake db:migrate

图片.png

接着我们可以通过查看 route 路由信息,来确定是否生成了 Article 类的 CRUD 路由。

rails routes

图片.png

根据输出结果可以确定,应用中已经生成了 Article 的增删改查路由,我们可以在浏览器中访问 http://localhost:3000/articles

图片.png

点击 New Article 添加一个新的 Article,输入 title 和 context 信息后点击 Create Article

图片.png

自动跳转到 Article 详情页面,路由为 /articles/1,路径中的 1 就是 Article 的 id;

图片.png

再回到 Article 列表页面 /articles,就可以看到我们刚刚添加的一条记录

图片.png

点击 Edit 按钮会跳转到编辑页面,此时的路由为 /article/1/edit,输入修改后的信息并点击 Update Article

图片.png

之后会自动跳转到 Article 详情页面,并自动更新为修改后的信息。

图片.png

可以再添加几个 Article 记录,在 Article 列表页面展示

图片.png

选中一条记录,点击 Destroy 即删除这条记录

图片.png

此时页面会有弹框提示

图片.png

点击确认,再次回到 Article 列表页面,删除的记录不在列表中展示。

scaffold 生成的 ArticleController 类中包含了增删改查以及列表展示的方法并且映射到指定的路由以及视图页面。

图片.png

可以看到 scaffold 生成的代码非常简单,在实际开发中通常会先通过 scaffold 生成基本的 CRUD 方法,然后在此基础上再进行开发,可以极大地提高开发效率。