一、命令方式创建支架
如果要创建一个控制器为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等效的