进入上节创建的工程下,app目录,其中:
controllers目录代表web开发模式中mvc的c
models目录代表m
views目录代表v
普通的项目我们做一个业务的CRUD的时候都是需要自定义每个文件的编写。
使用脚手架去创建业务:
在ROR框架下,一条命令就可以将所有事情做完,比如我们做一个书籍book的增删改查。
使用rails g scaffold book name:string price:integer author:string命令即可定义model、controller、views等文件。该命令我理解为某业务的脚手架。
执行脚手架命令之后,你会发现工程的app目录的controllers、models与views有关book的文件都已经创建完成。
接下来我们执行rake db:migrate
然后启动服务 rails s
使用浏览器访问http://127.0.0.1:3000/books 你会发现我们已经访问到了book的列表页,只是该列表目前没有数据。我们可以点击New Book链接,进行创建book。然后再返回列表页,当然也可以进行修改某一条book。
接下来我们看一下这几个页面是为何能被访问到的。
当我们访问http://127.0.0.1:3000/books的时候,首先找到rails,因为rails启动后的默认端口是3000,当然我们也可以指定其他的端口,比如rails s -p 3001, 那么我们便可以http://127.0.0.1:3001/books进行访问。
找到rails后,我们工程下有一个config目录,其中有一个routes.rb文件,该文件会控制所有路由。打开文件可以发现其中有一条代码为:resources :books 其作用是告诉book这块业务功能所有的页面的路由规则。即定义了默认的book列表页、新增页、修改页、删除页等。我们可以通过下面的表格看到book模块的所有路由规则。
GET | /books | Books | index | display a list of all photos |
GET | /books/new | Books | new | return anHTMLform for creating a new photo |
POST | /books | Books | create | create a new photo |
GET | /books/1 | Books | show | display a specific photo |
GET | /books/1/edit | Books | edit | return anHTMLform for editing a photo |
PUT | /books/1 | Books | update | update a specific photo |
DELETE | /books/1 | Books | destroy | delete a specific photo |
通过表格第一行我们可以看到,我们上面访问的http://127.0.0.1:3001/books这个地址则会通过routes.rb中的路由规则被路由进入到app/controllers/books_controller.rb中的index方法。可以看到index方法通过Book.all将所有的book放到了成员变量@books中,controller使用models处理完毕之后便会进入到apps/views/index.html.erb中,页面中遍历controller已经处理之后的@books成员变量然后使用table展示出来。整个访问过程大致如此。