ruby on rails脚手架之初体验

今天通过一个玩具应用的案例认识了ruby on rails当中的脚手架。
此处省略创建项目的过程,直接开始介绍脚手架。

初步认识脚手架

使用Rails内置的脚手架生成资源
例如:我们现在需要一个用户表,假如有用户名,用户id,用户邮箱这三个字段。要实现这个模型,并为它创建web页面。需要执行下面命令:

User
id integer
name string
email string
rails generate scaffold User name:string email:string
#rails generate scaffold 代表生成rails脚手架
#User 是对应的表名
#name:string 是对应的属性以及类型,多个属性用空格隔开即可

需要注意的是:没必要指定 id 字段,Rails 会自动创建并将其设为表的主键(primary key)。

迁移数据库
下面这个命令的作用是使用新的 User 数据模型更新数据库。

rails db:migrate

需要注意的是:在 Rails 5 之前的版本中, db:migrate 命令使用 rake 执行,而不是 rails 。因此,执行迁移的 rake db:migrate 命令要写成:

bundle exec rake db:migrate

生成对应的增删改查页面

URL 动作 作用
/users index 列出所有用户
/users/1 show 列出id为1的用户
/users/new new 创建新用户
/users/1/edit edit 编辑id为1的用户

效果如下:

index页面

ruby on rails脚手架之初体验_第1张图片
Paste_Image.png

new页面

ruby on rails脚手架之初体验_第2张图片
Paste_Image.png

show页面

ruby on rails脚手架之初体验_第3张图片
Paste_Image.png

edit页面

ruby on rails脚手架之初体验_第4张图片
Paste_Image.png

目录结构如下,基于MVC的文件分布如下:

ruby on rails脚手架之初体验_第5张图片
Paste_Image.png

index页面为例,介绍一下, Model, View, Controller这三者之间的关系:

  1. 浏览器向该URL/users发送请求
  2. rails路由对URL分析,将/users交给users_controller.rb,也就是控制器。
  3. index动作对它进行处理,向user.rb,模型请求获取全部用户数据。
  4. user模型从数据库取出数据并返回给控制器。
  5. 控制器将得到的数据放在@user当中,然后传入index视图。
  6. 视图用得到的数据渲染HTML页面。
  7. 控制器将得到的页面返回给浏览器。

今天在学习过程中遇到的问题:

在创建好user资源后,运行访问/user页面报错:

ArgumentError in UsersController 
#index key must be 32 bytes

搜索发现这个是rails 5.0.1之前的一个bug,于是我更新了版本。但是不清楚除了更新版本以外还有什么其他解决方案。
关于这个bug的链接:
https://github.com/rails/rails/issues/26694

总结

通过今天的应用示例对脚手架有了一个初步认识,不过脚手架生成的代码只是一个简单的框架,还有许多东西需要完善,比如

  • 没有页面布局
  • 在新建用户时没有验证是否为空和合法性
  • 没有很完善的测试
    总之,还有许多功能,内容需要我们一点点完善。

你可能感兴趣的:(ruby on rails脚手架之初体验)