Rails101 练习 浓缩版 - xinzhongliang/xinzhongliang.github.io GitHub Wiki
2-2 建立新项目
- 建立一个新 Rails 项目:
rails new rails101
; - 进入新建好的项目, 并建立 git 做版本控制;
2-3 帮 Rails 项目穿上衣服“Bootstrap”
- 帮项目穿上衣服 Bootstrap,挂上 bootstrap-sass 这个 gem
- app/assets/stylesheets/application.scss:
@import "bootstrap-sprockets";
@import "bootstrap";
- 新增 app/views/common 文件夹
- 新增 navbar, footer
- 修改全域 HTML 样式 application.html.erb
- 新增一个 welcome controller
- 新增一个空的 Hello World 页面
- 将首页指到 welcome 下的 index.html.erb 页面
2-5 制作漂亮的“提示信息”
- 将 Bootstrap 的 js 提示套件 bootstrap/alert “挂”进项目里面
- 加入 app/helpers/flashes_helper.rb
- 新增 app/views/common/_flashes.html.erb
- 在 application.html.erb 内加入 flash 这个 partial
3-1 建立讨论群的架构
- 设计 Group 的 model 架构
- 产生 groups controller
- 建立 index action 以及 index 的 view
- 在 routing 上挂上 groups
3-2 将首页换成讨论群一览表
- 修改 routing
4-2 实作讨论群“新增”功能
- new, create
- show
- edit, update, destroy
4-6 限制“标题为空”的Group,不能被新增
- 在 Group model 加入“标题限制”
- new, update
4-7 共用“表单”
- 产生 app/views/groups/_form.html.erb (edit, new)
- "move form to partial"
4-8 将表单换为 Bootstrap 提供的版型
- 使用 SimpleForm 简化
5-2 安装 devise gem
- 产生会员系统的必要文件
rails g devise:install
,rails g devise user
5-3 让这个网站有实际“登录”、“退出”的功能
5-4 让“群组”与“使用者”产生关联
- 新增 user_id 到 group 的 table 里(增加model表格栏位的方法)
- 连结 user 与 group 的双向关系 (一对多)
- 在新增看板时,记录谁是群组的建立者(判断,加入)
5-5 只有群组的“创始者”可以“编辑”“删除”群组资讯
- 路人不应该可以看到“编辑”“删除”按钮
- 路人不应该也可以“直接输入网址”去存取 edit / update / destroy action
- 制作 find_group_and_check_permission
- 把 find_group_and_check_permission 挂到 before_action
- 修掉 show 里面的 Edit 按钮
6-2 建立文章
- 设计 Post 的 model 架构
- 建立 Group / Post / User 三者间的关系
- 建立 Post Controller
- 设立 routing
- 在 groups#show 新增 “发表文章”按钮
- 实作 new / create action
- 修改 groups_controller 中的 show action, 让文章能够显示出来
- 限制 post 的 content 不能为空
6-4 文章应该按照发表时间倒序排列
- 修改 groups_controller
- 使用 scope 替代直接 order
6-5 加入文章分页功能
- 安装 will_paginate (Github: Will_paginate)
- 7-2 建立“群成员”数据表
- 建立 GroupRelationship model
- 设定 Group 与 User 之间的关系 ( 使用者参与的所有群)
- 设定 Group 与 User 之间的关系 ( 群组内的所有会员 )
- 在 user model 内实作判断式“是否为群组的一分子”
- 一个使用者可以选择“加入”、“退出”讨论群
- 群的创始者,创群一开始就应该加在群组里
7-5 实际操作“加入群组”或“退出群组”
- 加入与退出群组必须要是登入状态下才行
- app/controllers/groups_controller.rb
- config/routes.rb
- app/views/groups/show.html.erb
8-2 可以看到自己参与的所有群组
- 产生 account 的 namespace 下的 groups_controller
- 修改 routing
- 修改下拉选项
- 建立 account/groups_controller.rb 下的 index action
- 新增 “参与群组一览表”
8-3 可以看到自己发表的所有文章
- 产生 account 的 namespace 下的 posts_controller
- 建立 account/posts_controller.rb 下的 index action
- 修改 routing
- 新增 “发表文章一览表”
9-2 系统内建 Helper “simple_format”的使用
- 将 group.description 改成 simple_format(group.description) (simple_format 是 Rails 内建的 Helper,可以帮忙把 \r\n 翻译成为 <br> )
9-3 使用自定义 Helper
- 自制 render_group_description(group)
9-4 partial 还可以这样用
- 修改 app/views/groups/index.html.erb
- <%= render :partial => "group_item", :collection => @groups, :as => :group %>