ruby on rails腳手架之初體驗
今天通過一個玩具應用的案例認識了ruby on rails當中的腳手架。
此處省略建立專案的過程,直接開始介紹腳手架。
初步認識腳手架
使用Rails內建的腳手架生成資源
例如:我們現在需要一個使用者表,假如有使用者名稱,使用者id,使用者郵箱這三個欄位。要實現這個模型,併為它建立web頁面。需要執行下面命令:
User | |
---|---|
id | integer |
name | string |
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](https://i.iter01.com/images/5d3cd6a9d9ab6a2a6c42892c97dea4ebbbd0c95f72046b087199386c27987049.png)
Paste_Image.png
new頁面
![3830560-8f47c1197ea0c5f0.png](https://i.iter01.com/images/68a5f42189adf8e2e2e10c64ae2f03a80a3f120ed6f15e56bd2cb3e7005ccc1b.png)
Paste_Image.png
show頁面
![3830560-45ec6f86f78991db.png](https://i.iter01.com/images/9b9f438388481209565b4d11bac7f84a69802c3f27e19f95ef00af4aa892e8c7.png)
Paste_Image.png
edit頁面
![3830560-925d724b53b1d165.png](https://i.iter01.com/images/dd812a1d9d339dec1a70a9d9685240a5b151dc7132176dae16d6fd34cce894c6.png)
Paste_Image.png
目錄結構如下,基於MVC的檔案分佈如下:
![3830560-0188b06a4fb2ef86.png](https://i.iter01.com/images/798ffee1039a5e46f3503f63d847e2028e47b23f6ef7d120284312d9d39f8439.png)
Paste_Image.png
以
index
頁面為例,介紹一下,Model
,View
,Controller
這三者之間的關係:
- 瀏覽器向該URL
/users
傳送請求 -
rails
路由對URL分析,將/users
交給users_controller.rb
,也就是控制器。 -
index
動作對它進行處理,向user.rb
,模型請求獲取全部使用者資料。 -
user
模型從資料庫取出資料並返回給控制器。 - 控制器將得到的資料放在
@user
當中,然後傳入index
檢視。 - 檢視用得到的資料渲染HTML頁面。
- 控制器將得到的頁面返回給瀏覽器。
今天在學習過程中遇到的問題:
在建立好user
資源後,執行訪問/user
頁面報錯:
ArgumentError in UsersController
#index key must be 32 bytes
搜尋發現這個是rails 5.0.1
之前的一個bug,於是我更新了版本。但是不清楚除了更新版本以外還有什麼其他解決方案。
關於這個bug的連結:
https://github.com/rails/rails/issues/26694
總結
通過今天的應用示例對腳手架有了一個初步認識,不過腳手架生成的程式碼只是一個簡單的框架,還有許多東西需要完善,比如
- 沒有頁面佈局
- 在新建使用者時沒有驗證是否為空和合法性
- 沒有很完善的測試
總之,還有許多功能,內容需要我們一點點完善。
相關文章
- rails on ruby,ruby on rails 之程式碼塊(二)AI
- ruby on rails 小技巧AI
- Ruby on Rails Ping ++ 支付AI
- Ruby on Rails中的MVC架構是如何工作的AIMVC架構
- 【Koa】腳手架登入驗證
- Ruby on Rails 生成指定版本的 Rails 專案AI
- MQTT之初體驗MQQT
- ruby on rails筆記和理解AI筆記
- Android DataBinding之初體驗Android
- vue腳手架Vue
- Ruby on Rails Mountable vs. Full EngineAI
- Ruby on rails專案中 引入BootstrapAIboot
- 什麼是腳手架?為什麼需要腳手架?常用的腳手架有哪些?
- 設計模式之初體驗設計模式
- vue腳手架工具Vue
- vue - Vue腳手架Vue
- 腳手架與混入
- 從NodeJS切換到Ruby on Rails - nikodunkNodeJSAI
- Rails並不是用Ruby編寫的AI
- 肖威洞察 | Ruby on Rails 的快速學習的體系框架;AI框架
- NodeJs之初體驗04—UR(X)NodeJS
- vue腳手架基礎Vue
- React腳手架之NextJsReactNextJS
- plop小型腳手架工具
- Laravel-S 專案之初體驗Laravel
- 小程式雲開發之初體驗
- Django基礎教程之初體驗Django
- 搭建webpack簡易腳手架Web
- React入門---react腳手架React
- 分享一個springboot腳手架Spring Boot
- 使用腳手架建立Vue程式Vue
- vue - Vue腳手架/TodoList案例Vue
- 小型前端腳手架工具Plop前端
- 如何用vue搭建腳手架Vue
- 簡單vue專案腳手架Vue
- 腳手架的開發總結
- webpack4配置vue腳手架WebVue
- react+typescript+antd腳手架搭建ReactTypeScript
- Vue2.0搭建腳手架流程Vue