iThome online | iThome Blog | iThome周刊訂閱

載入中...

twtw

IT邦初學者
9級

[RoR] 簡單完成 CRUD 的動作

所謂的CRUD是指 新增(Create)、讀取(Read)、更新(Update)、刪除(Delete);有時會聽到「五個動作」,就只是再加上一個列表(List)的動作,RoR可以一次就包辦起來,在自己還沒搞清楚怎麼去寫這些從網頁來操作資料庫的動作前,就可以運作了。



收到書籤:發佈到twitter      
分享時間:2008-09-17 18:10:16

▼ ADVERTISEMENT ▼

分享內容(
9

為何用SQLite
在rails 2.x 版後,預設操作的資料庫是 SQLite3,而Rails 1.x版便是大家較常用的MySQL為預設,所以只要執行 rails test1 不加參數就會以預設的資料庫來使用,若用 rails test1 -d mysql 就會採用所指定的資料庫為對象。前提是要先裝好ruby 去操作該資料庫的library。

在RoR下做初期的開發時期,較常用SQLite來操作,是因操作簡單,在量少而規模還不是很大的資料量情況下,是比MySQL來得快速些;當要正式上線時,才把資料庫換為MySQL,才能有效處理大規模的資料量。

基本上,SQLite在資料庫的基本操作及表格間的關聯功能上,在剛發展測試是足夠的,而且處理中文上,至少在UTF-8的環境下沒什麼問題。

第立第一個測試計畫
這一系列都在自己的家目錄 /home/ironman 來建立範例:

#建立一個Project
rails test1
#建立一個可寫「標題」、「內容」的雛型:
# 一定要進入該Project目錄,再作其他動作才有效
cd test1
# 建立一個 article 的 model 為指定其欄位
./script/generate scaffold article title:string body:text
# 將上述所產生的資料模型,寫到資料庫裡面
rake db:migrate
#啟動web server
thin start -d
# 若有裝 mongrel 執行
# mongrel_rails start -d

不加port的參數,預設是以3000的port 來開啟,若是遠端操作,就別忘了開iptables的port出來才可連上。
然後 http://IP:3000/articles/ 就可看到畫面,而可以操作CRUD等五個動作。

最簡陋的簡單應用
這個scaffold的動作,產生了最粗略的資料庫操作界面,假設自己做靠自己增減的公佈欄、或只有自己post文章就好的話,就可以這個為基礎,,再自行修改一下呈獻畫面的方式;至於公開在網路上,當然就要做一個,沒有新增、刪徐、編輯、更新界面的同樣東西。

每個RoR的Project是由MVC(Model, View, Control)所架構,Model,上述的例子就是article,scaffold產生其model在 app/model 之中的article.rb,,而後面直接下了 欄位:屬性,也把這個model 名稱加上 s 為資料庫的 table,並把欄位屬性產生在 db/migrate 之中;同時把操作資料庫的CRUD等五個動作,寫到 app/controlers 之中,也把如何呈獻的html碼的template寫到 app/views/articles 裡面,相對到Controller中的動作。
./script/generate controller blog index show

這樣就產生了一個 blog 的controller以及 index 、 show 兩個動作及相對應的view出來,但內容都是空的,這時只要把 app/controllers/ 的 articles_controller.rb 中的 index 及 show 的內迥,貼到 blog_controller.rb 之中,再把 app/views/articles 的index.html.rb 及 show.html.rb 複製到 app/views/blog 之中,並且將有編輯、刪除、新增等連結給刪除掉,將index.html.rb 有關 show 的語法改方:
<td><%= link_to 'Show', :action => 'show', :id => article.id %></td>

這樣就不會跑到 articles 的 show 的動作中。而app/views/blog/show.html.rb中更改一下 Back 的連結為:
<%= link_to 'Back', :action => 'index' %>

就可回到 blog 的 controller 之中的 index 了。

若要在不同的動作上,都會有一致的template呈獻的話,可在 app/views/layouts 之中編輯一個 blog.html.erb,可參照同目錄之中的articles.html.erb的寫法。

讓網頁的根目錄出現指定的畫面
所以當告訴人只有可view而已的網址則是: http://IP:3000/blog/ 若希望能把那個 blog 的路徑去掉直接 http://IP:3000 就可以看得到的話,修改 conf/routes.rb
在 map.resources :articles 的這一行下面加入:
map.root :controller => "blog", :action => "index"

然後,一定要把 public 目錄中的 index.html 給移掉,才不會被哪一頁給擋住,基本上thin可以不用啟動的情況下,http://IP:3000/ 就可以看到文章的列表了。

[RoR] 簡單完成 CRUD 的動作

目前沒有資料

回應

請填寫您的回應,長度限為1,000個字,回應不計點數,也不限使用次數



 

檢舉違規

違規事項:

*補充檢舉理由(可省略),字數不可超過100字

推薦

推薦理由:


*給回答者的鼓勵(可不填),字數不可超過100字

▼ ADVERTISEMENT ▼

熱門標籤

 cisco   crystal   exchange   it   java   javascript   linux   m-power   mail   microsoft   msnlib   msnp15   msnsdk   msn機器人   mysql   nas   oracle   outlook   pmi   pmp   raid   report   sap   server   smartquery   sql   vista   windows   xp   倍力   倍力資訊   免費軟體   國際專案管理師   報表   專案管理   微軟   有話大聲說   活動   省錢   網路   網路儲存   網路管理   網頁安全   網頁設計   資安   資料庫   資訊安全   防毒軟體   2003   2008