奋斗了一个晚上,把官网的Getting Started做完了。几乎功能和Symfony是一个模子。从时间前后来看,应该是Symfony模仿了RoR的。
需求很简单,可以发一条博客信息(Post 列表,详细,增删改),别人可以回复(Comment,和博客是一对多关系),博客可以加入Tag信息。(Tag,增删改)。
从增量开发的观点。分三步走
1)博客基本功能
2)回复功能
3)标签功能
到此,一个基本Blog已经基本成型。
教程也非常简单。
1)使用scaffold命令建立一套(包括数据库建表脚本,CRUD画面,Model,Contorl等等)
$ rails generate scaffold Post name:string title:string content:text
2)将建表脚本同步到数据库
$ rake db:migrate
3)非常神奇,现在一个Blog所有的功能都有了。
但是和symfony的感受一样。最快的不一定是最好的。果然官方文档,特别提醒说,众多的最佳实践,都要求不要使用scaffold命令。因为这些最快出来的东西有可能不是自己要的。而为了修改和自定义,常常要比自己直接修改文件,要发挥很多的时间。结果,本来是要加快速度的,却把大量时间花在了配置scaffold上。所以,除非是学习用,或者对scaffold的配置已经了如指掌了。正式开发还是少用为妙。
4)所以还是用一个中间级别的命令。
$ rails generate model Comment commenter:string body:text post:references $ rails generate controller Comments
自己一步一步做成model controller以及View。这样既能减少大量时间,也能更容易掌控。
5)按照教程,还能了解基本的Controller的功能。例如
def show @post = Post.find(params[:id]) respond_to do |format| format.html # show.html.erb format.json { render :json => @post } end end def update @post = Post.find(params[:id]) respond_to do |format| if @post.update_attributes(params[:post]) format.html { redirect_to(@post, :notice => 'Post was successfully updated.') } format.json { render :json => {}, :status =>:ok } else format.html { render :action => "edit" } format.json { render :json => @post.errors, :status => :unprocessable_entity } end end end