ruby on rails(ROR)从入门到放弃:二(初探MVC)

进入上节创建的工程下,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展示出来。整个访问过程大致如此。

猜你喜欢

转载自blog.csdn.net/sinat_34704593/article/details/88398511