补充一下,其实大家的回复都偏离了我的意思。无意争吵。
我认为一个良好的帮助,应该是教初学者一步一步创建出 M,V,C。这其实并不难,创建三个文件而已。只需要手把手做完这三步,立即会对 ROR 中的 MVC 模型有一个深刻而具象的认知。而不是像现在这样:很多初学者做完了 Demo,却感觉自己被蒙在鼓里,没有一点而兴奋——因为这个 demo 实际上不是他本人“亲手”完成的,而是归功于脚手架。
当一步一步地完成一个简单的 demo 之后,再告诉学习者:其实不必如此麻烦的,ROR 已经为你准备好了一个叫 Scaffold 的工具,它可以帮你创建好上面的文件。
实至名归。
我曾经也是一个 Rails 的入门者。说说我当时的情况吧。
入门 ROR 之前,已经比较熟悉地了解 PHP 的 Thinkphp、CakePHP 等 MVC 框架,Python 的 Webpy 框架,Bootstrap 前端框架与 JS/CSS 等。也就是说,对 MVC 有了不少了解,使用 Ruby 也能够进行简单的元编程了。
直到我去读 ROR 官方原版的 Guide,那感觉就像膝盖中了一剑。
首先,Guide 写的开始部分还是挺不错的,然后就不停的吹嘘“Rails”是多么的敏捷——看那架势,一个真真的 Beginner 准会以为 Rails 真正的就是那种丝毫底层都不需要了解的快速入门语言——我认为这是一个极大的误导——只为了吸引更多初学者的目光。
然后,敏捷开发来了:它随后使用了脚手架(Scaffolding)创建了一堆文件。然后几乎没有任何代码,我们的确发现一个拥有增删改查的“网站”出现了!连 CSS 和 JS 都是那么完美。
这时候,新手们就懵了。如何创建一个 M?不知道。如何创建一个 V?不知道。如何创建 C?不知道。他们之间如何联系?不知道。
然后我按照教程的方法,象征性的增加了一个名为 History 的模型。事实证明我再次懵了:它自动把 history 复数成了 histories。。。。我去!!!这也太智能了吧。。。。可是,我当时分明感觉到的不是智能——而是一种未知的,略带自作聪明的力量,感觉到了前方的坑!!!
无论如何,我始终认为这是教程最大的败笔:明知道 Scaffolding 功能只是块糖,在实际的开发过程中几乎不会用到,但它仍然选择了这个命令,来证明 ROR 是多么的“敏捷”。而忽视了作为一篇基础教程:hand by hand,one by one
这样做的后果是一个初学者不知道这个命令如何生成了哪些文件,这些文件如何合作。 对于一个已经了解了 MVC 的人来说,也不会对 ROR 的 MVC 有任何直观的感受。唯一的感觉就是:不灵活。
或许这篇贴的确有点妄自菲薄。元芳,你怎么看?
到目前为止,我依然再大量使用 scaffold 来生成各种文件,这个东西不是鸡肋! 项目一开始创建都是用它来快速生成原型的(应该说某个表引出的功能都是用它来搞出来的)
我喜欢用 scaffold 来生成文件,然后再手动删除一部分不需要的。
scaffold 怎么会是「纯粹是引新人入坑」呢?我记得我刚学 Rails 是,执行完 scaffold 后,Rails 的整个 MVC 目录结构就很清晰了,而且我觉得 scaffold 正好体现了 Rails 的一个设计哲学:约定优于配置。
至于你提到的复数问题,看看这里 http://blog.thefrontiergroup.com.au/2011/06/pluralizations-and-singularizations-inflections-in-rails-3/
Getting Started with Rails This guide covers getting up and running with Ruby on Rails. After reading it, you should be familiar with:
我觉得 getting started 的任务已经完成了。想看完 getting started 就开始开发实际应用,我觉得怎么都不可能的。
用来入门没有问题啊,等于有人按你的思路给你写了一个例子,然后让你看代码。
要说新人不知道如何创建一个 M, 一个 V,感觉这和 scaffold 没关系啊,你不去理解它,如何会知道它是怎么样创建的呢?scaffold 就给了你一个活生生的例子,让你研究。
呵 怎么听楼主这个意思是 用 Rails 不仅仅是敏捷,连学习都免了。我不相信会有一本讲 Rails 的教程竟然不讲如何创建 model,view,controller 的,会不讲 Rails 约定的。新手只要按部就绪的学习,又怎么可能疑惑呢? scaffold 是很不错的工具,自动生成高度提炼过的最纯粹最简单的同时由完全实现 rest 功能的代码。
#7 楼 @yzhrain “要说新人不知道如何创建一个 M, 一个 V,感觉这和 scaffold 没关系啊,你不去理解它,如何会知道它是怎么样创建的呢?”
我不认同。一个良好的帮助,应该是教初学者一步一步创建出 M,V,C。这其实并不难,创建三个文件而已。只需要手把手做完这三步,立即会对 ROR 中的 MVC 模型有一个深刻而具象的认知。而不是像现在这样:很多初学者做完了 Demo,却感觉自己被蒙在鼓里,没有一点而兴奋——因为这个 demo 实际上不是他本人“亲手”完成的,而是归功于脚手架。
当一步一步地完成一个简单的 demo 之后,再告诉学习者:其实不必如此麻烦的,ROR 已经为你准备好了一个叫 Scaffold 的工具,它可以帮你创建好上面的文件。实至名归。
没有用过 PHP 开发过项目,不过用 JAVA 开发过项目,项目代码量稍微多一些,各种混乱,当一个项目经过三四道离职人员的手后,你就会明白,rails 是有多么的好
斯坦福大学公开课:<编程方法学> 提到一个概念,"信息隐藏", 使用微波炉你不需要知道微波炉是怎么动作的,只需要知道怎么使用它。把需要加热的东西放进去,调节好温度,再按启动就行了 编程也一样
事实上我的第一个应用用脚手架生成的,一个简单的门店报表系统,现在都还在使用中 https://github.com/mangege/peng rails 包含的概念太多了,没有编程经验是很难理解的,如果有其它语言的经验,就很容易多了. 比如像 MVC,RESTful, 这些概念在 JAVA WEB 开发都是一些基本概念
教过一百来个新手,感觉开始就上 scaffold 确实是坑。弄了 scaffold, 就要解释为什么就能工作了。就要解释生成的每个元件是什么,还要解释这些东西是怎么组合在一起的,还要解释某地方的某些语法怎么回事,还要解释什么地方是怎么约定大于设定的。不解释,新手不懂就会问。解释了,实际就是解释了 Rails 的大部分,新手必晕。我们以前讲这个之后问,“大家有什么问题么?”得到最多的问题是”这节课录像了吧?“
我们现在直接绕过 scaffolding, 而是把每个 Rails 组成部分隔离开来讲,隔离开来练。深度优先 而不是 广度优先。让新手一块一块啃,效果还不错
同意楼主。既然是 Guide,那就应该从最基本的开始,由浅入深,一步步讲解,而不是先来个高深莫测
(对新手来说)的魔术,蒙倒一大批再说。
我在跟着这个 Guide 走的时候,面对最后完成的 Demo 一点成就感都没有,一因为我知道这不是我做的,二我也不懂他是怎么做到的。再看后面的就更晕了,一大堆专有名词,并且和前面的 Demo 基本没什么关系,最后看不下去就去看书了。
这个 Guide 给我的感觉就是似乎想把一本书的内容压缩成一个教程,什么都涉及到,什么也都没深入。新手还不如直接去看Agile Web Development with Rails
来的有效率。
一句“元芳,你怎么看?”,给我弄得一头雾水,一分钟后,在http://weibo.com/1748466473/z0CakinIw 看到同样的问句,才想起来去 Google 一下……
从 knwang 的经验来看,的确是这样的。 对于初学者,只要了解了 MVC,或者以前接触过类似的东西,我往往会换一种思路进行解释。
先从新建一条 Route 开始(比如我想制作一个叫/testing 的页面),就会给出“找不到控制器”的错误;然后进而告知控制器的文件命名及相关规则,引导其建立一个匹配的 Controller。紧接着系统提示“Template”找不到的错误。再然后理所当然新建一个模板,一个新手写的 Hello world 诞生。水到渠成。
虽然这个例子不涉及数据库,但初学者往往能一下子对整个 ROR 的体系有非常直观的认识,并且会逐步主动尝试去修改模板变量等内容。这个过程远远比解释 Scaffold 生成的各个文件来得自然。
#25 楼 @hhuai #26 楼 @help5305fff 这个主要取决于项目的类型,涉及仓储库存之类的数据库应用会用得比较多,因为这类应用几乎是 CURD 的大集合。