ruby on rails腳手架之初體驗

weixin_33872660發表於2017-03-11

今天通過一個玩具應用的案例認識了ruby on rails當中的腳手架。
此處省略建立專案的過程,直接開始介紹腳手架。

初步認識腳手架

使用Rails內建的腳手架生成資源
例如:我們現在需要一個使用者表,假如有使用者名稱,使用者id,使用者郵箱這三個欄位。要實現這個模型,併為它建立web頁面。需要執行下面命令:

User
id integer
name string
email string
rails generate scaffold User name:string email:string
#rails generate scaffold 代表生成rails腳手架
#User 是對應的表名
#name:string 是對應的屬性以及型別,多個屬性用空格隔開即可

需要注意的是:沒必要指定 id 欄位,Rails 會自動建立並將其設為表的主鍵(primary key)。

遷移資料庫
下面這個命令的作用是使用新的 User 資料模型更新資料庫。

rails db:migrate

需要注意的是:在 Rails 5 之前的版本中, db:migrate 命令使用 rake 執行,而不是 rails 。因此,執行遷移的 rake db:migrate 命令要寫成:

bundle exec rake db:migrate

生成對應的增刪改查頁面

URL 動作 作用
/users index 列出所有使用者
/users/1 show 列出id為1的使用者
/users/new new 建立新使用者
/users/1/edit edit 編輯id為1的使用者

效果如下:

index頁面

3830560-c64bae6265db89f6.png
Paste_Image.png

new頁面

3830560-8f47c1197ea0c5f0.png
Paste_Image.png

show頁面

3830560-45ec6f86f78991db.png
Paste_Image.png

edit頁面

3830560-925d724b53b1d165.png
Paste_Image.png

目錄結構如下,基於MVC的檔案分佈如下:

3830560-0188b06a4fb2ef86.png
Paste_Image.png

index頁面為例,介紹一下,Model,View,Controller這三者之間的關係:

  1. 瀏覽器向該URL/users傳送請求
  2. rails路由對URL分析,將/users交給users_controller.rb,也就是控制器。
  3. index動作對它進行處理,向user.rb,模型請求獲取全部使用者資料。
  4. user模型從資料庫取出資料並返回給控制器。
  5. 控制器將得到的資料放在@user當中,然後傳入index檢視。
  6. 檢視用得到的資料渲染HTML頁面。
  7. 控制器將得到的頁面返回給瀏覽器。

今天在學習過程中遇到的問題:

在建立好user資源後,執行訪問/user頁面報錯:

ArgumentError in UsersController 
#index key must be 32 bytes

搜尋發現這個是rails 5.0.1之前的一個bug,於是我更新了版本。但是不清楚除了更新版本以外還有什麼其他解決方案。
關於這個bug的連結:
https://github.com/rails/rails/issues/26694

總結

通過今天的應用示例對腳手架有了一個初步認識,不過腳手架生成的程式碼只是一個簡單的框架,還有許多東西需要完善,比如

  • 沒有頁面佈局
  • 在新建使用者時沒有驗證是否為空和合法性
  • 沒有很完善的測試
    總之,還有許多功能,內容需要我們一點點完善。

相關文章