2013年10月16日 星期三

Ruby 學習筆記 Part 1 x 手刻Board 的CRUD


         學習Ruby語言,通常第一步都是實現CRUD(CreateReadUpdate以及Delete的縮寫),雖然Ruby有提供所謂的鷹架系統(Scaffold),可以快速實現CRUD,但聽從了些前輩的意見,強烈建議還是要自己一步一步實際寫過CRUD,才能真正了解其中的精隨。目前我參考XDite所寫的Rails 101 作為一開始的基礎練習,沒什麼sense,經歷了一番折磨才完成,因此記錄一下這次的學習筆記。

作業練習:參考Scaffold,手刻Board的CRUD。


實現步驟:
  1. $ rails new 專案名稱(以下範例是:CRUD_Board)。
  2. 在 Gemfile 加上 gem ‘therubyracer’。
  3. $ bundle install
  4. $ rails g model board name:string
  5. $ rails g controller boards index
  6. $ rake db:migrate
  7. 實作 index action。
  8. 實作 new / create action (實現 C)
  9. 實作 show action (實現 R)。
  10. 在 config/routes.rb 加上 resources :boards。
  11. 實作 edit / update action。(實現 U)。
  12. 實作 destroy action。(實現 D)。

我寫好的範例:https://github.com/FrankyWu/CRUD_Board.git

       前三步驟是在Ubuntu上新建一個ruby專案的基本步驟,就在這邊不贅述,第4~6步是建立MVC的架構,以及資料庫的佈署,建立一個名為board的model,其中只有一個name的欄位,type 是 string;以及建立一個相呼應的controller,並先建立一個index的action,這裡先建立一個觀念:

        網址結構為: “ http:// localhost /  boards  /  index  / 1  ”
        表示意思為: “ http://domain    /controller / action / ID ”

建立board model



建立 board controller



建立完記得使用 $ rake db:migrate,把資料庫佈署好喔!




實作index action


1. app/controllers/boards_controller.rb中加入 index action 的功能,目的是將網頁導向主頁 index.html.erb


2. 在app/views/boards新增 index.html.erb。


3. 使用rails s開啟伺服器的結果


實作 new / create action (實現 C) 以及 

實作 show action (實現 R)


1. 回到 app/controllers/boards_controller.rb 中新增 new action 以及 show action。new 是新增使用者的畫面,show是顯示出所選擇的使用者畫面。


2. 再新增 create action,我們可以看出 create action不只是導向某個頁面,而是產生一個新的 params(ID),如果成功會導向成功建立,不成功會導向 new action並產生建立失敗。



3. 同樣的在 app/views/boards 新增 show.html.erb以及 new .html.erb。





4. 新增一個 _form.html.erb 是為了呈現類似相同的版型,我們可以看到new.html.erb就有導向form的頁面並處理error message。


5. 在主頁 index.html.erb 加入 show 跟 new的連結,就完成了CRUD中的C跟R了。



6. 因為開始會使用到資料庫的處理,所以必須在 config / routes.rb 加上 resources : boards。



7. 使用rails s開啟伺服器的結果。






實作 edit / update action (實現 U)


1. 現在應該有點感覺了吧,仍然我們回到 app/controllers/boards_controller.rb加入edit 跟 update 的 action,edit是修改選擇的使用者畫面,update則是修改後對資料庫的更新。


2. 在 app/views/boards 新增 edit.index.erb,同樣的會導向 _form,因為跟new的頁面很像,不用重複在刻,唯一的差別是底下多了show的連結點。



 3. 修改 index.erb.html 把 edit的連結點放上去。



4. 因為會導到show 我們也要修該一下 show.index.html,可以讓他回到edit的頁面。



5. 這樣就完成CRUD的U了,讓我們看一下結果吧!





實作 destroy action (實現 D)


1. 終於來到最後一個action,也是最簡單的一步,再撐一下,app/controllers/boards_controller.rb新增destroy action。


2. 修改 index.html.erb。



3. 大功告成!




       這次只做了「流程上」的解說,畢竟先後順序出了個差錯,就會進入萬劫不復的地獄(也沒這麼糟啦),完成了這次的作業對CRUD已經有了基礎的知識,之後再慢慢去了解其中的語法跟意義,應該就不會太難,下篇繼續介紹CRUD的POST作業,敬請期待囉!


參考文件:

1. Rails 101:http://rails-101.logdown.com/

2. 麥克阿忠的 Ruby on Rails 真功夫:http://www.openfoundry.org/tech-column/8478
Related Posts Plugin for WordPress, Blogger...