Rails 向来以Web快速开发闻名,究竟有多快,体验了才知道,本文将带你一步步开发一个Rails Web程序,适合Ruby on Rails初学者入门。
大部分内容是从英文教程翻译过来的,原文是基于Rails 2.*版本,对Rails 3.*有些已经不兼容,特地做了些修改。适用于于Rails 3.*版。
英文原文链接
http://wiki.rubyonrails.org/getting-started/first-rails-app-walkthrough
一、安装
可以参考前面的教程,根据您的系统安装Ruby/Rails,并确保安装好mysql。
可以参考下面的链接
二、创建并运行(没有mysql也可以用)
$ rails new myapp -d mysql # 将会在当前目录创建Rails程序骨架 $ cd myapp # 进入目录 $ rails server # 启动服务器
此时如果通知执行 “bundle install”,执行它然后重新执行”rails server”
浏览器访问 http://127.0.0.1:3000。你将能看到Rails正在运行;休息一下,恭喜你。
三、创建数据库 & scaffold
(scaffold一般翻译为脚手架,但本人认为这个翻译不过生硬,而且脚手架是建筑界的通用术语,很多人不知道是啥。体验原味,暂不翻译)
1、用你喜欢的编辑器打开程序,我个人喜欢RubyMine
2、打开config/database.yml,你可以在这里配置数据库,默认会生成3个数据库,development/production/test。分别对应于开发/生成/测试环境,你也可以添加host和port参数配置数据库服务器IP和端口。本程序使用默认配置即可。
3、创建development数据库
$ rake db:create
4、现在我们需要创建我们的第一张表。在Rails中,一般通过scaffold来生成表。scaffold是rails中经常使用的命令,可以完成很多非常神奇的功能。让我们先不带任何参数运行一下scaffold
$ rails generate scaffold
输出结果将告诉我们怎么使用这个命令
5、让我们用scaffold来生成代码
$ rails generate scaffold user first_name:string last_name:string active:boolean
会创建controller, views, models和数据库脚本,但此时还没有创建表
6、创建数据表
rake db:migrate
migrate是“迁移”的意思,它会执行上一步生成的数据库脚本。
7、浏览器访问:http://127.0.0.1:3000/user 应该为users
这个页面已经为我们生成了增删改查代码,开始玩吧
四、添加功能
1、哎呀!这时忽然想起忘记给user添加bio字段了。这时我们可以回退刚才的操作并添加一列
$ rake db:rollback
回退上一次migrate
2、打开/db/migrate/ 目录,这里只有一个文件[date]_create_users_rb。(代码中定义了up方法来建表,down方法来删表。)没有这些方法修改代码,在t.boolean :active后添加t.text :bio
3、保存文件并执行
$ rake db:migrate
4、如果访问http://localhost:3000/users/new你会发现表单中仍没有bio字段,这个字段要我们手动添加
5、打开/app/views/users/_form.html.erb
在
前面添加
<%= f.label :bio %> <%= f.text_area :bio %>
6、在view页面中添加bio字段。打开/app/views/users/show.html.erb
/app/views/users/index.html.erb,依照其它字段添加bio信息
7、上面操作做完后你将在增删改查页面都发现多了bio字段。
五、添加Validation验证
1、Rails把validations放在model文件里,所以我们找到/app/models/user.rb
2、我们需要用户必须输入first name和last name。修改后的代码如下:
class User < ActiveRecord::Base
validates_presence_of :first_name, :last_name
end
需要添加attr_accessible :active, :first_name, :last_name,:bio要不然bio不能在页面上访问
3、添加一个用户,试着不输入first name或last name,提交表单后会报错。
六、把玩console
1、让我们来对User Model做一些有意思的事情。运行:
$ rails console
将会为我们提供一个有访问models权限的Ruby IRB session
2、玩之前,先在console里执行下面代码,以便让我们查看生成的SQL代码
ActiveRecord::Base.logger = Logger.new(STDOUT)
3、运行一个Ruby代码测试正常运行
puts "Hello Dude!"
4、现在就可以开始操作我们的model了,可以这样来创建一个用户
u = User.new
u.first_name = "Gregg"
u.last_name = "Pollack"
u.save
注意留意生成的SQL
5、也可以这样,合并成为一行代码
User.create(:first_name => "Joe", :last_name => "Blow")
6、查找first name 为”joe”的用户,并修改他的last name为”johnson”
u = User.find_by_first_name("Joe")
u.last_name = "Johnson"
u.save
7、删除用户
u.destroy
8、玩一下几个常用命令
User.first
User.last
User.all
User.all会返回一个数组,使用[0]或[2]来操作其中的一个元素
9、以首字母大写打印出系统中所有用户first name
User.all.each {|user| puts user.first_name.upcase }
10、将会发现打印出所有的first name,同时返回Users数组。记住所有Ruby方法都会有返回值,即使返回的是nil空的。
11、用所有用户的last name创建一个数组
User.all.map {|user| user.last_name }
代码下载
myapp