• Rails 開發(fā)工作的大部分集中在創(chuàng)建和編輯 apps 目錄下的文件。

  • 先來了解一下這個目錄下的結(jié)構(gòu)。
    Apps 目錄下包含四個主要目錄,它們分別是 Controllers, models, views, helpers

    1:Controllers 目錄存放 rails 應(yīng)用中相應(yīng)的 controller 類,controller 類處理來自用戶的 web 請求。
    2:views 目錄存放相應(yīng)的模板文件,模板文件填充數(shù)據(jù)后,轉(zhuǎn)換為 html 格式傳遞給用戶的瀏覽器。
    3:models目錄存放數(shù)據(jù)模型類,模型類封裝了數(shù)據(jù)庫中的數(shù)據(jù)。很多框架在數(shù)據(jù)模型層都做的比較復雜,用過 rails 后,你會發(fā)現(xiàn)它非常容易使用。
    4:helpers 目錄存放了簡化 Controllers, models, views 使用的幫助類。

    編輯 controller 類
    開始使用 Rails 之前,我們需要了解一下 rails 是如何將 controller 類中的方法和 url 映射到一起的,這對于理解 rails 工作原理很重要。
    rails 在生成的 skeleton 框架中包含了一個 scripts 目錄,這個目錄中包含了很多腳本程序,它們可以幫助我們來簡化很多工作,我們已經(jīng)使用過了 script\server 這個腳本,它是用來啟動 webrick 服務(wù)器的。現(xiàn)在我們看看如何生成默認的 controller 文件
    打開新的 DOS 命令行,在C:\student目錄下運行 ruby script\generate controller MyTest

    C:\student\app\controllers 目錄中將生成一個包含 MyTestController 類定義骨架的名為 my_test_controller.rb 的文件
    鼠標右鍵點擊此文件,選擇”edit” 打開編輯此文件。




    在瀏覽器中訪問 http://127.0.0.1:3000/My_Test/

    瀏覽器響應(yīng)沒有找到對應(yīng)的 index 方法,不要擔心,這不是什么大問題,因為默認生成的控制器類,不包含任何方法。不過這里我們了解到,如果不輸入任和 url 連接的話,默認rails 需要在控制器類中找一個 index 的方法。這很容易理解,類似于 apache 服務(wù)器中目錄下面的 index.html 文件一樣。
    我們現(xiàn)在編輯這個 MyTestController 類。
    如圖:



    重新刷新剛才的頁面 http://127.0.0.1:3000/My_Test/ ,你會看到如下結(jié)果



    在瀏覽器中運行 http://127.0.0.1:3000/My_Test/keywen



    了解到 rails 是如何將 url 和控制器中的函數(shù)做簡單映射的。

    需要做一些解釋,在運行 ruby script\generate controller MyTest 的時候, rails 做了一些默認的假設(shè)。 MyTest 對應(yīng)的 controller 文件是 my_test_controller.rb, 文件中控制器類名是 MyTestController,而 url 映射是 /My_Test/ .
    這些默認規(guī)定的好處是:我不需要編輯復雜的配置文件,只要對相應(yīng)的文件做編輯就可以了。只需要關(guān)注程序邏輯,而不是其它什么,這就是 rails 設(shè)計原則中的“約定優(yōu)于配置”。

    另外我們也感覺到 ruby 動態(tài)語言的好處,這點是 java 所無法辦到的。我們在編輯完 controller 后,重新刷新頁面,就可以使程序生效。對于編譯型的 java 語言來說,不重新編譯,重新啟動服務(wù)器是無法做到這點的。Rails 開發(fā)的易用性可見一斑了,要知道啟動和編譯都是非常耗費時間的,尤其對于那些 EJB 服務(wù)器來說更是如此。