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頁面
new頁面
show頁面
edit頁面
目錄結構如下,基於MVC的檔案分佈如下:
以
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預設腳手架的模板AI
- rails on ruby,ruby on rails 之程式碼塊(二)AI
- [ruby] rails renderAI
- MQTT之初體驗MQQT
- Chrome之初體驗Chrome
- vue腳手架Vue
- ruby on rails 小技巧AI
- Ruby on Rails 相關AI
- Ruby On Rails 技術AI
- vue - Vue腳手架Vue
- vue腳手架工具Vue
- Ruby on Rails Ping ++ 支付AI
- do |r| Ruby & Rails endAI
- 什麼是 Ruby on Rails?AI
- 如何提高 Ruby On Rails 效能AI
- Ruby on Rails 生成指定版本的 Rails 專案AI
- 設計模式之初體驗設計模式
- MySQL複製之初體驗MySql
- vue腳手架基礎Vue
- plop小型腳手架工具
- ruby on rails筆記和理解AI筆記
- ruby on rails 伺服器配置AI伺服器
- Ruby on Rails?有人會用嗎?AI
- .nil? .empty? .blank? .present? in Ruby on RailsAI
- 如何提高 Ruby On Rails 的效能?AI
- Android DataBinding之初體驗Android
- Python爬蟲之初體驗Python爬蟲
- ASP.NET MVC之初體驗ASP.NETMVC
- 搭建webpack簡易腳手架Web
- vue - Vue腳手架/TodoList案例Vue
- 如何用vue搭建腳手架Vue
- 小型前端腳手架工具Plop前端
- Vue-cli 腳手架搭建Vue
- React入門---react腳手架React
- 肖威洞察 | Ruby on Rails 的快速學習的體系框架;AI框架
- Ruby on Rails Mountable vs. Full EngineAI
- Ruby on rails專案中 引入BootstrapAIboot
- 使用 Ruby on Rails 開發 Go 介面AIGo