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

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

( 出来创业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 条回复
1107

图没啦

2948

#1楼 @jasl 啊? 什么图?

1107

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

445

思维哥哥!😆

19045

小白要给一个大大的赞

2948

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

2948

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

10567

小白,,给个大赞

23794

赞一个

24996

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

26688

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

15999

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

5b7ee5

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

244

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

23698

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

7614

#13楼 @awlter

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

19671

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

19671

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

2948

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

28931

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

56

看的出来作者很用心

4215

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

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