2011年3月7日 星期一

Rails 的 Controller說明與建立

接下來終於開始慢慢進入正題了

再開始前先講一下之前的問題,當有多個Rails Server 運作時會造成一些不必要的問題

因此在進行所有動作前先確認是否將Rails Server關閉

透過以下Linux指令來做確認

$aux / grep ruby

查看ruby的Process與PID

$kill -9 PID

刪除指定的PID Process



Rails的Controller

首先查看rails工作目錄中會有一個資料夾叫做"app"

此資料夾就是application的縮寫,也就是專門處理網站中各種應用程式的開發

接著我們進入app資料夾中應該可以看到四個子資料夾

controller
helpers
models
views

這次的主題在於controller,因此我們先不管helpers與models。

views資料夾底下所放置的就是各個子網頁

而Controller裡面一定會有對應View每個子網頁的項目

所以說Controller指的就是子網頁的控制方式,也意味著可透過Controller來進行應用程式的開發

再來進入Controller可以看見有一個檔案application_controller.rb

副檔名是.rb意謂著是使用ruby語法所做出來的控制器(Controller)

這個檔案裡面的資料就是Ruby的程式,但我們先暫時不管,等到未來再進行說明

瞭解了Controller是什麼東西後,那麼我們開如何去創建新的子網頁與控制器呢?

有兩種方式,一種是手動在Controllers資料夾中建立檔案,同時views的資料夾下也要建立相同的子網頁

另一種方式就是透過rails所提供的Script來自動建立子網頁與控制器

在這邊使用第二種方式來進行


使用Script來建立子網頁與Controller

我們將工作目錄移往rails專案資料夾,接著在終端機(terminals)中打入以下指令

$script/generate controller 控制器類別 關連的子網頁名

ex. $script/generate controller Test index t01

其中test代表的是控制器的類別(=方法),也就是你要設計的控制應用程式類別名

而index與t01則是你要使用此類別控制器(test)所控制的子網頁名

PS. 一般常用的命名法則為第一個字母大寫,若是多個字的結合則是每個字的第一個字母都大寫
ex. FirstWord

PS2. 若是打入$script/generate則是會跑出generate這個script的使用說明,有興趣的可以參考看看。

在完成建立後,會發現Controllers資料夾中已經多出了一個test_controller.rb的控制器檔案了

而且在views資料夾也可以找到相對應的子資料夾test,裡面放著剛剛建立的兩個子網頁index.html.erb與t01.html.erb

副檔名為erb代表此網頁是可支援ruby語法的網頁

從這邊可以知道一個Controller必定對應一個views中的子目錄(且目錄名一樣)

因此若是透過第一種手動建立的方式則也必須依循此規則進行


運行Server並確認子網頁是否已建立完成

上一步終於將子網頁與控制器建立完成,現在就來測試看看吧!

確認目前工作目錄是在rails的專案資料夾底下,接著輸入以下指令

$script/server

之後開啟瀏覽器,在網址列輸入: localhost:3000/控制器類別/子網頁

ex. localhost:3000/test/

這樣就會看到剛剛建立的子網頁

有人會問我們剛剛不是建立了兩個子網頁index與t01嗎? 他怎麼會知道要進入那個網頁?

基本上伺服器預設若是有index這個網頁就優先進入index,因此他會先進入index

當然也可以再多加子網頁的名字:

ex. localhost:3000/test/index
ex2. localhost:3000/test/t01



這樣就完成了Controller與子網頁的建立。

沒有留言:

張貼留言