2008年2月29日 星期五

Ruby on Rails-快速建立一個 MVC 範例

rails 
開發環境:
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 搶鮮版釋出!

0 則回應:

Related Posts Plugin for WordPress, Blogger...