在Rails 2.0使用scaffold功能

Rails20 scaffold
之前買了O’Reilly Ruby on Rails的書學
在照在書上的範例做時,發現scaffold功能根本沒辦法work
後來才知道是Rails 2.0以後的版本scaffold有一些調整
如果照著原本的寫法: ruby script/generate scaffold person home
會收到這樣的錯誤: wrong number of arguments (1 for 2)

原因是Rails 2.0的scaffold改成只能傳一個model name的參數
無法像1.x版時,同時指定model name和controller name
新的scaffold雖然只能傳一個model name
不過其實它只是暗中內定controller name就是model name英文的複數
所以新的scaffold寫法要像這樣:

# ruby script/generate scaffold [model name] [db field name and type]
ruby script/generate scaffold post title:string body:text

做完之後,它會create一個db migration file: 001_create_posts.rb
記得先做rake db:migrate去建立實際的DB table
然後就像以前一樣可以Run了,URL打 http://localhost:3000/posts/
點取New Post,就會看到如上面的畫面

※ 如果是用NetBeans 6.0.1,它的generate scaffold介面還是舊的
所以無法直接指定db的field,要等它出新版for rails 2.x吧
※ 不過最近Rails可能又有新的2.1版要出了,最好不要又改太多了
程式的底層一直改來改去,對真正開發的人也是很大的困擾 -.-|||

Tags:

Leave a Reply