開發環境:
Rails 2.0.2
NetBeans 6.0
MySQL 5.0(透過 Instan Rails 啟動)/sqlite 3.0(Rails 2.0.2預設資料庫)
以下為偏重於實作的步驟紀錄:
建立一個 Post 的 CRUD 系統, Post(內含兩個欄位-名稱 和 備註) 為 Model , 利用 scaffold 產生的網頁為 View , 負責協調 Post 和 網頁的工作則落在 Controller 身上. 因為直接利用 scaffold 建立,所以整個步驟會短到不可思議!
利用 scaffold 建立 MVC. 在命令列下執行: ruby script/generate scaffold post name:string memo:string
即會產生所需的 MVC 外加 Migration .
利用 Migration 建立資料庫. 在命令列下執行 rake db:migrate
即在資料庫內建立存放 Post 的表格 .
開啟 Web Server. 利用瀏覽器打開 http://localhost:3000/posts 就可以看到由 scaffold 產生系統畫面.
以下是實作時遇到的問題.
Q: 無法直接使用 scaffold .
Rails 1.2 原本可直接使用以下語法:
class PostsController < ApplicationController
scaffold :post
end
但現在則會顯示錯誤訊息:
NoMethodError in AdminController#index
undefined method `scaffold' for AdminController:Class
A: 解答在 http://davidlynch.org/blog/2008/01/rails-20-scaffolding/
作者認為對使用者來說,利用 "產生一堆可見程式碼(使用者可以看到並客製化)" 比 "原本的神奇語法" 對後續的工作來得有幫助!
Q: 在 NetBeans 下執行 Migration 出現
rake aborted!
undefined method `require_gem' for main:Object
A: 解答在 http://blog.nanorails.com/articles/2007/12/20/ruby-gem-1-0-is-out
利用 NetBeans 直接產生的專案,其 Configuration/boot.rb 的內容跟用 Rails 產生的內容有所差異,將 Configuration/boot.rb 內的 "require_gem" 以 "gem" 取代,或都使用 Rails 來產生 RoR 專案.
延伸閱讀:
Rails 2.0 搶鮮版釋出!