使用 generate来自动生成controller:
[fangpeng@vps1 rails.pureage.info]$ rails generate controller StaticPages home help
create app/controllers/static_pages_controller.rb
route get 'static_pages/help'
route get 'static_pages/home'
invoke erb
create app/views/static_pages
create app/views/static_pages/home.html.erb
create app/views/static_pages/help.html.erb
invoke test_unit
create test/controllers/static_pages_controller_test.rb
invoke helper
create app/helpers/static_pages_helper.rb
invoke test_unit
invoke assets
invoke coffee
create app/assets/javascripts/static_pages.coffee
invoke scss
create app/assets/stylesheets/static_pages.scss
可以看到,项目目录里有如下变化:
[fangpeng@vps1 rails.pureage.info]$ git status
# On branch master
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: config/routes.rb
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# app/assets/javascripts/static_pages.coffee
# app/assets/stylesheets/static_pages.scss
# app/controllers/static_pages_controller.rb
# app/helpers/static_pages_helper.rb
# app/views/static_pages/
# test/controllers/static_pages_controller_test.rb
no changes added to commit (use "git add" and/or "git commit -a")
从上面我们可以看到,在使用generate生成controller后,一方面增加了一些文件,另一方面修改了config/routes.rb文件。那么如何撤销呢?
使用destroy可以达到该目标。
[fangpeng@vps1 rails.pureage.info]$ rails destroy controller StaticPages home help
remove app/controllers/static_pages_controller.rb
route get 'static_pages/help'
route get 'static_pages/home'
invoke erb
remove app/views/static_pages
remove app/views/static_pages/home.html.erb
remove app/views/static_pages/help.html.erb
invoke test_unit
remove test/controllers/static_pages_controller_test.rb
invoke helper
remove app/helpers/static_pages_helper.rb
invoke test_unit
invoke assets
invoke coffee
remove app/assets/javascripts/static_pages.coffee
invoke scss
remove app/assets/stylesheets/static_pages.scss
此时发现文件都复原了:
[fangpeng@vps1 rails.pureage.info]$ git status
# On branch master
nothing to commit, working directory clean
与destroy类似,在执行了rake db:migrate更新数据库后,如果想撤销更新,可以使用:
rake db:rollback
要想使数rake db:migrate VERSION=0据库回滚到最开始的状态,可以使用:
rake db:migrate VERSION=0
VERION可以更换为其他数字
由于上面为了演示,将controller撤销了,下面重新生成:
[fangpeng@vps1 rails.pureage.info]$ rails generate controller StaticPages home help
create app/controllers/static_pages_controller.rb
route get 'static_pages/help'
route get 'static_pages/home'
invoke erb
create app/views/static_pages
create app/views/static_pages/home.html.erb
create app/views/static_pages/help.html.erb
invoke test_unit
create test/controllers/static_pages_controller_test.rb
invoke helper
create app/helpers/static_pages_helper.rb
invoke test_unit
invoke assets
invoke coffee
create app/assets/javascripts/static_pages.coffee
invoke scss
create app/assets/stylesheets/static_pages.scss
在生成了StaticPages controller后,在浏览器中访问: http://rails.pureage.info/static_pages/home和http://rails.pureage.info/static_pages/help ,结果如下所示.
注意,在上面执行
[fangpeng@vps1 rails.pureage.info]$ rails generate controller StaticPages home help
时,我们是创建了一个名为StaticPages的contoller,而home和help分别是这个controller的两个action.
如上所示,我们现在有两个页面home和page,他们对应StaticPages这个controller的两个action. 通过/static_pages/home和/static_pages/help可以访问到。
现在我们要手动添加一个页面/static_pages/about的话,该怎么做呢?
首先,添加一个about的路由:
[fangpeng@vps1 rails.pureage.info]$ vim config/routes.rb
增加如下内容:
get 'static_pages/about'
然后,为StaticPages控制器增加一个about的action:
[fangpeng@vps1 rails.pureage.info]$ vim app/controllers/static_pages_controller.rb
内容如下:
class StaticPagesController < ApplicationController
def home
end
def help
end
def about
end
end
最后,为about动作添加一个模板,新建文件如下:
[fangpeng@vps1 rails.pureage.info]$ vim app/views/static_pages/about.html.erb
内容为:
<h1>About Us</h1>
<p>
The <a href="http://railstutorial.org/">Ruby on Rails Tutorial</a>
is a project to make a book and screencasts to teach web development
with <a href="http://rubyonrails.org/">Ruby on Rails</a>. This
is the sample application for the tutorial.
</p>
此时,我们访问/static_pages/about页面如下图: