1.4 第一個HelloWorld
1、檔案功能
檔名 | 功能描述 |
---|---|
app/ | 有Controllers(控制檯)、Models(模型)和Views(檢視)資料夾,接下來的內容主要都在這個目錄。 |
config/ | 應用程式設定檔、路由規則、資料庫設定等等 |
db/ | 資料庫的對映檔案 |
lib/ | 放一些自定義的Module、Class |
Gemfile | gem外掛列表,可以指定外掛的版本 |
README | 專案的使用說明 |
2、網頁請求路徑
當網頁傳送一個請求,首先我們會根據網頁請求路徑以及路由(route.rb)裡面的程式碼,來確定分配到哪個控制器(controller)中,控制器將請求處理之後,將資料傳送給檢視(view)顯示。

請求路徑
3、HelloWorld
(1)連線遠端,開啟專案檔案目錄(cd /vagrant/data_system),咱們開始編寫第一個HelloWorld,執行rails g controller home index,其中home代表controller,index代表action方法
vagrant@vagrant-ubuntu-trusty-64:/vagrant/data_system$ rails g controller home index #系統返回資訊 createapp/controllers/home_controller.rb routeget 'home/index' invokeerb createapp/views/home createapp/views/home/index.html.erb invoketest_unit createtest/controllers/home_controller_test.rb invokehelper createapp/helpers/home_helper.rb invoketest_unit invokeassets invokecoffee createapp/assets/javascripts/home.coffee invokescss createapp/assets/stylesheets/home.scss
我們在sublime開啟data_system專案,看到app/controllers/home_controller.rb資料夾下會有以下程式碼,可以看到系統自動生成了一個HomeController類,以及一個index方法:

(2)在路由(config/route.rb)檔案中改一下程式碼
#原始碼 get 'home/index' #改成 get "home/index" => "home#index"
意思是 ofollow,noindex">http://localhost:3000/home/index 網址對應到HomeController中的index方法。
(3)我們再開啟app/views/home/index.html.erb檔案,將裡面的程式碼全部刪掉替換成下面程式碼,不要忘了儲存檔案哦~
<h1>Hello, World!</h1>
然後rails s啟動專案,在瀏覽器中開啟 http://localhost:3000/home/index 頁面(注意mac電腦是 http://192.168.33.10:3000/home/index )出現Hello,World!

Hello,World!
4、新生疑問點
主要將我當時剛學習ruby時的困惑,我在這裡梳理一下。
(1)Controllers(控制檯)、Models(模型)和Views(檢視)還有route.rb(路由)是什麼關係,程式碼執行順序是怎樣的?
答:在瀏覽器輸入 http://localhost:3000/home/index 連結,會根據home/index對應到route.rb檔案中的get "home/index" => "home#index”路由,根據路由home#index找到home_controller中的index方法,方法中可能會有例項變數傳遞給view模板,也就是views/home/index.html.erb檔案。這是ruby on rails的規則,都是根據home和index找到對應的檔案,所以檔名稱(比如home/index.html.erb、home_controller)要按照規則來,不能亂改。
(2)如果出現錯誤如何去檢視錯誤原因以及排除錯誤呢?
答:我們先製造一個錯誤,在路由(config/route.rb)檔案中程式碼改成,將英文雙引號" 改成中文雙引號“
#原始碼 get "home/index" => "home#index" #改成 get "home/index" => "home#index”
然後重啟專案(ctrl+c停止專案,rails s啟動專案),在終端會出現以下錯誤,SyntaxError錯誤是語法錯誤,程式寫的不合規範就會報此錯誤。下面是錯誤的詳情,明確指出了是config/routes.rb檔案中的第5行少了一個end。

SyntaxError
我們開啟config/routes.rb檔案,看到裡面第二行有一箇中文雙引號,導致字串沒有正常結束,導致第五行的end被當成了字串,我們將第二行的雙引號換成英文的,然後重啟專案就可以了。
當我們遇到錯誤的時候,首先看終端返回的資訊,一般都會明確指出錯誤的具體位置,後面我們在專案中遇到的錯誤,會具體情況具體分析。
注意:
當我們重新修改了routes.rb、controller、config檔案等都需要重新啟動專案。修改views檔案不需要重新啟動專案。