文章目录
  1. 1. 课程目标
  2. 2. 课程复盘
    1. 2.1. Rails 的 CRUD 与 RESTful
      1. 2.1.1. HTTP 请求( Request)与 HTTP 动作 ( Verb)
      2. 2.1.2. RESTful 的基础概念
      3. 2.1.3. Rails 的基础 RESTful概念
      4. 2.1.4. 以下例子以 第三章, 做出 CRUD 功能的讨论版来解释:
      5. 2.1.5. 网址对应关系
      6. 2.1.6. 总结

课程目标

接下来会以一个“讨论版”为主题,实际让同学了解如何“从零打造”手写出一个网站。

这个讨论版会有:

  • 使用者注册以及登录功能
  • 开新讨论区、留言功能
  • 加入讨论区、退出讨论区功能
  • 权限管理功能
  • 热门文章排序功能
  • 了解什么是 RESTful

当你把这次应用程序实作完成,并上线后,你会学会:

  • 怎么把需求变成会动的 Rails 应用程序
  • 如何在 Rails 套版
  • 如何制作使用者登录功能
  • 重要 Rails 观念以及 API
    • CRUD
    • RESTful
    • member, collection
    • helper
    • partial
    • scope
  • 找到 Rails 第三方 gem 的技巧
  • 要怎么把你的应用程序放到网络上

这几乎是一个 Rails 新手应该学的一切了,有了这些基础技巧之后,你再学更难的技巧,或者是要自己做出复杂的东西,就不会那么容易失败了。

课程复盘

Rails 的 CRUD 与 RESTful

HTTP 请求( Request)与 HTTP 动作 ( Verb)

一般网页的运作原理是这样的:

  • 使用者在浏览器输入了某个网址,点击了某个连结。这都叫发出 HTTP 请求 ( Request)。
  • 而浏览器回应之后:产生页面,或者是重新导向。这都叫 HTTP 回应( Response)。

一般来说,使用者最常使用的是两种类型 / 动作 ( Verb )的请求: GET 与 POST。

  • GET :输入网址,点击某些网址。这都是 GET。
  • POST:送出表单。这叫做 POST

RESTful 的基础概念

因为 CRUD 是常见的操作行为,但是大家实作的方式、与网址设计方式不一样。造成很多维护上的困扰。

后来就有人发明 RESTful 这个概念,希望用 HTTP 的动作 ( Verb)一起去封装 CRUD 的行为。所以又多加了两个动作:

  • PUT : 更新 ( update )
  • DELETE : 删除 ( delete)

而 Rails 的 Routing 也是依循这样的理念去设计。

Rails 的基础 RESTful概念

由于RESTful是个新手不容易一下子理解的概念,号称学 Ruby on Rails 初期最大障碍。

在本篇尽量用浅显易懂的方式解释。如果看不懂也没关系,用背的!!

一定要背起来!

以下例子以 第三章, 做出 CRUD 功能的讨论版来解释:

  • 讨论版有个群组叫: groups。在 Restful 的概念里把这个 groups 叫做 resources,“一组资源”的意思。
    为了要控制它的运作,我们会创建一个新的 Controller文件 叫做 groups_controller.rb

HTTP Verb 有四种:

  • 新增 (create,使用 POST )
  • 读取 (read,使用 GET )
  • 更新 (update,使用 PUT )
  • 删除 (destroy,使用 DELETE)

在这组 controller 当中,我们会实作 7 个 Action ,4 张页面。

  • 首页( index ):用来列出所有的讨论版,可以选择各个单版 (使用 GET )
  • 各个讨论版专属页面(show):显示讨论版版名跟简介 (使用 GET )
  • 新增页面(new):里面会有表单,填完以后可以送出 (使用 GET )
  • 产生数据(create) :new 送出来的表单到 create 这个 action,新增一笔数据 ( 使用 POST )
  • 编辑页面(edit):里面会有表单呈现现有数据来,填完数据后可以送出 (使用 GET )
  • 更新数据(update):edit 送出来的表单可以到 update 这个 action,更新该笔数据 (使用 PUT )
  • 删除数据:送出删除请求,删除该笔数据(使用 DELETE)

这七个 action ,是每个CRUD功能里最基本的动作。只要我们在 controller.rb 里定义 (def) 好这七个方法当作动作 (action)。其他的部分 Rails 就会帮我们处理了。

像是设定 Routing (路由) 只需要简单一行:

config/routes.rb
1
resources :groups

这样不管浏览器端跑来什么样的请求 (request) ,Routing都会聪明地帮我们导向正确的 action 去运作后续流程。

网址对应关系

对于网址跟对应的Action与页面来说

  • /groups/ 一定就是 index,首页,对应Routes路径: groups_path
  • /groups/123 一定就是 show,名字为123的讨论版个版页面,对应Routes路径: group_path(123)
  • /groups/123/edit 一定就是 edit,编辑讨论版123的表单页面,对应Routes路径:edit_group_path(123)
  • /groups/new 一定就是 new,新增讨论版的表单页面,对应Routes路径(或称为helper):new_group_path

总结

所以制作一个 RESTful 风格的讨论版,我们仅需在Routes设定一行代码即可

文章目录
  1. 1. 课程目标
  2. 2. 课程复盘
    1. 2.1. Rails 的 CRUD 与 RESTful
      1. 2.1.1. HTTP 请求( Request)与 HTTP 动作 ( Verb)
      2. 2.1.2. RESTful 的基础概念
      3. 2.1.3. Rails 的基础 RESTful概念
      4. 2.1.4. 以下例子以 第三章, 做出 CRUD 功能的讨论版来解释:
      5. 2.1.5. 网址对应关系
      6. 2.1.6. 总结