use of database :
Rails 项目必定要用到数据库, 本例使用MySQL数据库
第一步: 数据库准备
1) 建库 :MySQL中创建三个数据库, 分别用于:开发, 测试,产品, 苦命约定用项目名做前缀。 SQL脚本如下:
create database chensite_development;
create database chensite_test;
create database chensite_production;
2)建表 :由于是开发阶段,先就只在chensite_development中建表, Rails建议每个表都带一个和业务无关的ID字段,建表
的SQL如下:
drop table if exists users;
create table users (
id int not null auto_increment,
username varchar(20) not null,
password varchar(20) not null,
email varchar(50) not null,
createtime datetime not null,
primary key(id)
)ENGINE=innoDB DEFAULT CHARSET=gbk;
LOCK TABLES users WRITE;
INSERT INTO users VALUES(1, '北京', '111', 'glcheng@163.com', '2007-04-11 23:59:59');
INSERT INTO users VALUES(2, 'JACK', '111', 'jack@163.com', '2008-04-11 23:59:59');
INSERT INTO users VALUES(3, '山东', '111', 'rose@163.com', '2006-04-11 23:59:59');
UNLOCK TABLES;
第二步:在Rails项目中配置数据库 的连接
‘修改config/database.yml ,给连接三个数据库的rot用户输入密码,在输入密码时要注意:
冒号后面要有一个空格,并且密码之后不要有空格,否则无法启动WEB服务,
同样为了解决中文乱码问题,可以增加一个encoding配置
# SQLite version 3.x
# gem install sqlite3-ruby (not necessary on OS X Leopard)
development :
adapter: mysql
encoding: gbk
reconnect: false
database: test #创建的mysql数据库名
pool: 5
username: root #连接mysql的用户名
password: mysql #连接mysql的用户名的密码
host: localhost #连接mysql的服务器
第三步:创建一个可以显示数据库数据的页面
1)创建数据模型 : app/models/user.rb
class User < ActiveRecord::Base
end
PS:
(1) Rails命名约定:数据库明为小写附属users, 文件名为小写单数user.rb,类名为大写单数User.
另外, 如果数据库明为site_users, 则文件名为site_user, 类名为SiteUser.
(2) 模型中不必定义属性, 它会自动以数据库字段为属性
2)创建视图 : views/homepage/index.rhtml, 显示user表所有记录的id 和name值
<html>
<body>
<h1>chenGang' site</h1>
<%for o in @users %>
id: <%=o.id%> 而用户名是<%=o.username%><br/>
<%end%>
</body>
</html>
视图中用到的@users变量来自于我们自己创建的如下控制器:
app/controllers/homepage_controller.rb
Rails中控制器中的变量可以在视图中使用
class HomepageController < ApplicationController
def index
@users = User.find(:all)
end
end
Homepage和视图的目录名homepage相关
Index方法和视图的文件名Index.rhtml相关
用index可以省略访问地址中的action (action默认为index)
最后启动web服务器 后访问: http://localhost:3000/homepage
over.