1. 程式人生 > >1.4 第一個HelloWorld

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
#系統返回資訊
      create  app/controllers/home_controller.rb
       route  get 'home/index'
      invoke  erb
      create    app/views/home
      create    app/views/home/index.html.erb
      invoke  test_unit
      create    test/
controllers/home_controller_test.rb invoke helper create app/helpers/home_helper.rb invoke test_unit invoke assets invoke coffee create app/assets/javascripts/home.coffee invoke scss create app/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"

意思是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檔案不需要重新啟動專案。