新建rails项目
$ rails new first_app
简单介绍 Rails 默认文件结构
- app/ 程序的核心文件,包含模型、视图、控制器和帮助方法
- app/assets 程序的资源文件,如 CSS、JavaScript 和图片
- bin/ 可执行文件
- config/ 程序的设置
- db/ 数据库文件
- doc/ 程序的文档
- lib/ 代码库文件
- lib/assets 代码库包含的资源文件,如 CSS、JavaScript 和 图片
- log/ 程序的日志文件
- public/ 公共(例如浏览器)可访问的数据,如出错页面
- script/rails 生成代码、打开终端会话或开启本地服务器的脚本
- test/ 程序的测试文件(在 3.1.2 节 中换用 spec/)
- tmp/ 临时文件
- vendor/ 第三方代码,如插件和 gem
- vendor/assets 第三方代码包含的资源文件,如 CSS、JavaScript 和图片
- README.rdoc 程序简介
- Rakefile rake 命令包含的任务
- Gemfile 该程序所需的 gem
- Gemfile.lock 一个 gem 的列表,确保本程序的复制版使用相同版本的 gem
- config.ru Rack 中间件的配置文件
- .gitignore git 忽略的文件类型
运行rails项目
创建完一个新的 Rails 程序后,你可以使用 Bundler 来安装和包含该程序所需的 gem。rails 命令会自动执行 Bundler(通过 bundle install)
$ bundle update
$ bundle install
$ rails server
gem 'uglifier', '>=1.3.0'
会安装 1.3.0 或以上的最新版 uglifier gemgem 'coffee-rails', '~> 4.0.0'
只会安装高于 4.0.0 版的 coffee-railsgem 'sass-rails', '4.0.0'
安装指定版本4.0.0的sass-rails文件
rails的脚手架功能 scaffold
-
新建User资源 将 scaffold 传递给 rails generate 就可以使用 Rails 的脚手架功能了。传给 scaffold 的参数是资源名的单数形式(本例中就是 User),后面可以再跟着指定数据模型的字段(注意没必要指定 id,Rails 会自动创建并将其设为表的主键(primary key))
rails generate scaffold User name:string email:string
-
接下来我们要用 Rake(ruby的make)来迁移(migrate)数据库:
bundle exec rake db:migrate
-
然后我们可以使用 rails s(rails server 的缩略形式)来启动本地服务器
-
Users 资源中页面和 URL 的对应关系
<table> <tr> <td>URL</td> <td>动作(Action)</td> <td>目的</td> </tr> <tr> <td>/users</td> <td>index</td> <td>显示所有用户的页面</td> </tr> <tr> <td>/users/1</td> <td>show</td> <td>显示 ID 为 1 的用户的页面</td> </tr> <tr> <td>/users/new</td> <td>new</td> <td>创建新用户的页面</td> </tr> <tr> <td>/users/1/edit</td> <td>edit</td> <td>编辑 ID 为 1 的用户的页面</td> </tr> <tr> <td> </td> </tr> </table>
rails程序的运行逻辑
- 浏览器向 /users 发起一个请求;
- Rails 的路由(config/routes.rb)将 /user 分配到 Users 控制器的 index 动作;
- index 动作向 User 模型获取所有的用户(User.all);
- User 模型从数据库中将所有的用户读取出来;
- User 模型将所有的用户返回给控制器;
- 控制器将获得的所有用户数据赋予 @users 变量,然后传递给 index 的视图;
- 视图使用内嵌 Ruby 代码的模板渲染成 HTML;
- 控制器将生成的 HTML 发送回浏览器。