一、命令方式創建支架
如果要創建一個控制器為companyuser、模型為CompanyUser的支架。只需要鍵入ruby script/generate scaffold CompanyUser companyuser
系統提示如下:
exists? app/controllers/
????? exists? app/helpers/
????? create? app/views/companyuser
????? exists? app/views/layouts/
????? exists? test/functional/
? dependency? model
????? exists??? app/models/
????? exists??? test/unit/
????? exists??? test/fixtures/
????? create??? app/models/company_user.rb? #模型文件
????? create??? test/unit/company_user_test.rb? #單元測試文件
????? create??? test/fixtures/company_users.yml? #測試夾具
????? create? app/views/companyuser/_form.rhtml? #局部模板(與new和show相關)
????? create? app/views/companyuser/list.rhtml? #數據庫內容列表頁面
????? create? app/views/companyuser/show.rhtml? #顯示某一數據庫行的詳細信息頁面
????? create? app/views/companyuser/new.rhtml? #新增一條數據庫行頁面
????? create? app/views/companyuser/edit.rhtml? #刪改某一數據庫行的詳細信息頁面
????? create? app/controllers/companyuser_controller.rb? #控制器文件
????? create? test/functional/companyuser_controller_test.rb? #控制器文件(測試)
????? create? app/helpers/companyuser_helper.rb? #輔助方法方法
????? create? app/views/layouts/companyuser.rhtml? #布局模板
????? create? public/stylesheets/scaffold.css? #樣式表文件
這樣一個MVC框架Web程序就基本形成了。
其中:
控制器文件為app/controllers/companyuser_controllers.rb
模型文件為app/models/company_user.rb
數據庫表 company_users
URL http://localhost:3000/companyuser/list
筆者發現rails對腳本命令對模型和控制器名稱的首字母大小寫不敏感。如:ruby script/generate scaffold CompanyUser companyuser和ruby script/generate scaffold companyUser Companyuser是一樣的。但對名稱里的非首字母大小寫敏感。若非首字母大寫對于控制器,對于控制器文件名為從大寫字母分開用下劃線相連的字符串,如:若控制器名稱為companyuser,控制器文件為companyuser_controllers.rb,類名為Companyuser, URL為 http://localhost:3000/companyuser/list;若控制器名稱為companyUser,控制器文件為companyuser_controllers.rb,類名為Companyuser, URL為 http://localhost:3000/companyuser/list;若控制器名稱為companyUser,控制器文件為company_user_controllers.rb,類名為CompanyUser, URL為 http://localhost:3000/company_user/list;可見
在rails中一般形如:http://localhost:3000/controller/action/的URL請求中的controller不是類名而是文件名。
總結一下:
rails命名規定:
變量名應該全部小寫,單詞之間以下畫線分隔;
類和模塊的名稱中沒有下劃線,短語中每個單詞的首字母(包括類和模塊名稱的首字母)大寫;
數據庫表名像變量名一樣,全部采用小寫字母,單詞之間以下畫線分隔,并且表名始終是復數形式的;
文件名全部采用小寫字母,單詞之間以下畫線分隔;數據庫表間關聯的
外鍵字段的名字應以被引用的目標表名為基礎,將其轉換為單數形式,并加上_id后綴;
連接表名應以需要連接的兩張表名稱(按照字母順序區分先后)用下畫線連接。
模型名 CompanyUser | 數據庫表 | ?company_users |
類 | ?CompanyUser |
文件 | ?app/models/company_user.rb |
控制器名 companyUser | URL | ?http://localhost:3000/company_user/list |
類 | ?Companyuser |
文件 | app/controllers/company_user_controllers.rb |
方法(action名) | ?list() |
布局模板 | ?app/views/layouts/companyuser.rhtml |
View | URL | ?http://localhost:3000/company_user/list |
文件 | ?app/views/companyuser/list.rhtml |
輔助模塊 | ?module CompanyUserHelper |
輔助模塊文件 | app/helpers/company_user_helper.rb
|
二、使用scaffold方法
1.ruby script/generate model CompanyUser生成CompanyUser模型
2.ruby script/generate controller Companyuser 生成Companyuser控制器
3.在
app/controllers/companyuser_controllers.rb文件中CompanyUserController類中加入scaffold方法:
class CompanyUserController < ApplicationController
??? scaffold :CompanyUserend
scaffold :CompanyUser語句與scaffold :companyUser和scaffold :company_user等效的