Rails 我对教小白纸们学习 Rails 的 步骤.

sg552sg552 · 2016年11月01日 · 最后由 chenge 回复于 2016年12月22日 · 4777 次阅读

( 出来创业 2 年了, 教的 rails 的人也超过了 50 个. 我会慢慢的把自己的心得和教程都分享出来. 目前草稿放在了 我的 github 上: https://github.com/sg552/happy_book_rails 欢迎大家提意见 )

Rails 的学习过程

市面上的 rails 入门, 书特别厚. 像块砖头一样.

其实还可以写的更厚.

我在 rails 2.x 的年代把 rails guide 打印出来过. 400 多页 A4 纸.

让新手望而却步.

可以很简单

确定一些内容是不需要学的. (例如 nested routes, nested form, 过时的路由等等, 回头我会单独写文章)

剩下的内容, 是要有学习过程的.

这里我要吐槽 rails 的官方文档. 它的第一张 rails tutorial, 完全不是入门. 而是一种 "技能的炫耀".

这个教程, 我让 30 个小白纸 (都是应届毕业生) 来学, 学习 2 周, 没有一个能看懂. 就是因为它是 rails 的特性的炫耀, 上来就给出一堆花里胡哨的概念和技巧, 充满了各种缩写, 各种概念和各种晦涩的东西.

当年我做了 3 年半的 java web 开发, 买了两本书 (ruby 锄头书 和 rails 滑板书), 结果还是无法快速入门 rails.

后来创业后, 我招不到人, 就只能自己培养, 于是发现对于新手, 教学的时候务必要一点一点的教, 前面一个概念弄明白了, 我再讲后面的概念. 绝对不能把 router, controller, 表单对象和 model 的东西 放在一堂课中讲.

正确的学习路径

对于小白纸, 正确的入门路径如下:

1.学习好 HTML + css

这个很重要. 学习好了 html 的标签,就知道后面的 form_for, select_tag, link_to 都是什么了.

2.学习好 ruby 语言.

只学习最常见的 20% 功能即可. 能知道最最基本的语法, symbol 是什么, 常见的简写方式, 理解 block 的概念, 知道"@"变量 就可以了.

3.学习好数据库.

只学习: 3.1 select, insert, update, delete 这些基本语句 3.2 where 查询语句 3.3 join 语句, 知道什么是关联和外键即可.

4.rails 第一课

学习 如何安装 rails, 知道 bundler 是什么, 写个 hello world 并显示出来. (务必不要学习增删改查)

5.rails 第二课. router

学习 路由. 只学习最常用的 restful 路由即可. 这里是 rails 最最复杂的三大概念之一. 路由的作用跟 脊柱一样, 把 M-V-C 这三大块都串联了一起. 所以务必单独拿出来学习.

而新手往往苦于对 路由不熟悉, 结果后面的 controller, form object 都没办法学.

6.rails 第三课 view

视图相对来说简单, 需要学习的前提知识是 router 和 html. 所以放在 router 之后讲. 侧重于学习它的 展现方面的知识. (在其他语言中, PHP,JSP 有这一个视图就可以入门了,所以国内学 PHP 的人总认为它好学)

7.rails 第四课 命令行, database migration 和 model 层.

7.1 先讲 rails 的命令行, 因为只有在命令行下面才能使用 migration

7.2 再讲数据库额的配置和迁移. migration 是 rails 的自带王牌. 学习的前提知识是 数据库的知识. 要熟悉对数据库的基本操作和关联关系. 所以放在这里. 我们这一课只讲 migration.

7.3 再讲 model. 务必记得 model 不要跟 form object 和 controller 一起学习, 新手一定会蒙圈. 所有 model 的操作 (增删改查) 都要放在 rails console 中讲解. 这样才能不跟 view, controller 混在一起 切记切记.

这些内容关联的特别紧密.

8.rails 第五课. Controller 和 form object.

到现在,我们终于可以学习 controller 的知识了. 有了前面 router, view 的铺垫, 同学们对于 controller 上手就会特别容易.

重点是 form object, 这里是 rails 三大难之二. 没有表单对象这个 web 实现模式的同学, 都是难以理解 rails 中的各种 form_for, form_tag, form_helpers 的. 所以,这里我们要向大家展开一扇新的大门. 学会了 form object, 那么 java 世界的第一个框架 struts 就基本学到手了.

然后是 form helpers. 它是把 , 等表单标签使用 rails 的形式来表示的组件. 这里的 前提知识是 html form 标签. 知道了这个, 就知道如何使用了.

最后,就是如何在 controller 中读取 request 中传递过来的参数 (往往是 form object 的形式).

(其实学习到了这里, rails 的最常见 20% 知识就学习完了.)

9.rails 第六课. layout, asset pipeline 与 部署.

layout: 布局. 它的学习前提知识是 : view, controller. 所以在这里学习. layout 也是一种关键的实现模式, 简单,有效.

asset pipeline , 是 rails 三大难之三. 哪怕是老手, 我都遇到过完全搞不定这个东东的朋友. 这里的

我觉得它的难在于:

  • 前提知识是: layout, view helper 和 tcp 协议的优化知识.
  • 部署时会遇到 linux 的权限知识
  • 调试时会遇到 nginx 的调试知识

所以, 大家看到没有, 只要用到的知识点一多, 这个环节就不好学.

最后,是 rails 的部署. 这里不难.几个命令搞定. 或者按照给定的 nginx 配置去做就可以了.

10.rails 第七课. 常用的组件

这些都是我统计了自己所有的 web 项目后,总结出来的跟 web 后端相关的组件.

都是轮子,我们按照官方网站的介绍拿过来用就可以.

10.1 分页 (Kaminari),上传图片 (carrier wave),上传到 upyun,发送短信, 所见即所得编辑器,

10.2 发送 http 请求(httparty), 日志工具 (log4r), 全局配置工具 (rails-config), HTML 分析工具(nokogiri), migration 注释,

10.3 bootstrap-rails, 执行定时任务(rufu-scheduler), 执行后台任务 (god), 执行延时任务(delayed_job), 使用 capistrano 进行自动化部署。

基本上, 学习了这些, 就是一个合格的 rails 小鲜肉了~

共收到 22 条回复

图没啦

#1 楼 @jasl 啊? 什么图?

#2 楼 @sg552sg552 眼花了...把看上面看成看上图了...

思维哥哥!😆

小白要给一个大大的赞

#3 楼 @jasl 写错了,已经修改!

#4 楼 @stephen 哈哈,这是哪位兄弟啊? #5 楼 @malayke 谢谢!

小白,,给个大赞

赞一个

个人感觉,这个方式层面有些低,没有把握住 Rails 设计的真谛. 首先是快速上手,下来就要讲 web 系统架构.(宏观),这样更够更好的指导对 Rails 的学习. 我和楼主一样也是自学的 Rails,一开始完全考悟把一些不太懂的东西搞清了. 当然学生可能就比较难了

作为一名应届毕业生,我对楼主的说法、吐槽及学习路径深表赞同!

觉得把 rails tuturial 看懂,写完 demo,再加 guide 就差不多入门了

不用理解 http 吗?小白自学感觉好难啊,除了知道它是用用来联系 Server 和 Client 的协议外, 看了一天还是不知道 HTTP 在干什么。。

教学这件事,老师的痛苦在于——“我不知道你不知道这个”,学生的痛苦在于——“我也不知道这个东西是不是和我理解的一样”

我发现我已经是一个合格的 rails 小鲜肉了~

#13 楼 @awlter

可以理解成方法调用, request 是调用,respon 是函数返回,请求 header 是参数,http 只是规范

思维在这方面还真是经验丰厚呢, 据说有很多不错的学生输出到 各公司中去

小白从头学这些东西如果没有人指点,很难分清所有的知识点到底应该学到什么程度就可以开始后面的学习了,在某一点钻的深了拖延速度,浅了后续遇到依赖前面知识的地方又会变得不明白,要是学习 ruby 所需要的技术栈有类似技术雷达一类的指点 那就舒服多了,也节省了很多的时间。

@kevinyu 谢谢 Kevin! 算上过去 3 年, 北京确实有几十个 ruby 年轻人是我带出来的~ 我负责带进门, 灌鸡汤, 同学们负责玩命努力. ^_^

非常棒的一本书,我看了前几张很受益,现在从 Java 转 ruby 请问有 pdf,kindle 版本吗?如果有的话,麻烦发一份 bud2@qq.com 。作者牛逼。

看的出来作者很用心

我也写过一个简单的入门,没有你的全,我们交流下吧。https://segmentfault.com/a/1190000004351558

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册