Ruby基本语法知识
- Array(阵列)
fruits = [“kiwi”,”plum”]
- class(类别) 类似于Python中的type
进入IRB1
2
3
4> 7.class
=> Fixnum
> "kiwi".class
=> String
class有method可以被调用
1
2
3
4fruits.length (字符串长度)
fruits.frist
fruits.methods (输入该类class的所有method)
fruits.sort (排序)循环
1
2
3fruits.each do |fruit|
puts fruit
end条件判断
1 | if 2 > 1 |
函数
1
2
3
4
5def pluralize(word)
word + "s"
end
pluralize("wiki")输出
puts "something"
特点, ruby依靠后面end
来判断语句是否结束了.
pipeline 管道;
项目文件归类
app/: 最重要的文件夹, 包括了controllers, models, views
config/: routes修改
db/: 数据库
assets/: css, 图片, js等静态文件
public/: 这是唯一一个放什么就出现什么的资料夹
MVC模型
Rails中的MVC模型:
Model, view, Controller
Model 数据层
Controller 控制层
View 展示层
注意: Rails中的View与Django中的View意义完全不同
Rails 架构使用
rails generate scffold topic title:string description:text
数据库定义
rails generate model vote topic_id:integer
数据库中对象与对象之间的关系; 在Django中自己使用的方法有问题, 没有使用过多对多.
会自动生成MVC
迁移数据库
rake db:migrate
告诉 Rails 更新资料库来建立一个用来储存新的 Model 的表格(Table)。
常用的web操作
C – create
R – Read
U – Update
D – Destroy
Create, Update, Destroy之后需要有提示
Destroy之前需要alert, 提示要求确认
这四个基本操作, 所用的request method不同
数据测试
相当于使用Django后台管理进行数据测试, 看数据库是否按照自己的想法生成rails c
进入rails console, 如此便可以操控数据库里面的数据了
class使用首字母大写进行调用, 与Django相同Topic.count
count方法返回数量1
2
3
4
5
6my_topic = Topic.first
my_topic.update_attributes(title: "Edited in the console") # 修改数据
my_topic.votes.create # 新建数据
my_topic.votes.count
my_topic.votes.first.destory # 删除数据
exit # 退出console
association 联合; 同事
注意对象与实例的区别以及对应的method的不同
对象: 是一类事物的抽象, 也可以理解为实例的聚合体
实例: 对象的具体化
对象与实例的关系:
先定义对象, 指明其属性及方法; 然后可以声明一个实例, 顺便给这个实例的属性赋值.
在ruby中对象与实例的method表
Model class/association 的method
1 | Topic.first |
Model instance 的 methods
1 | my_topic.title |
详情:
https://guides.rubyonrails.org/active_record_querying.html
nil 出自法语”nihil”意味无物, 有时候, 代表数字0; 在编程中,
nil
指代一个空集合或者一个列表中没有任何实体. 可以和null
互换使用.
只有修改教程里面的代码, 才能真正的学会编程
如果只是照着教程一步一步做, 永远学不会, 反而会沉迷在自己什么的学会了假象之中
eg. 之前是投票+1, 可以试着加一个扣分-1的功能
以此监测自己是否真的学会了
排序英文:
sort
order
如果搜索sort没有的话, 试试order
待完成
根据投票分数排序topics
新增一个 ‘about’ 页面,并将连结放在 topics 列表的最下方。记得也要在 About 页面上放置回 Topics 列表的连结,以免使用者迷路。
自己目前不清楚rails的套路, 无法添加简单的静态页面到路由
输出路由配置
rake routes
用来检查route是否配置正确
开发流程
- 先在后台测试是否完成了该功能
- 如果完成了, 再考虑与用户进行交互. 而不是相反
eg. 需求. 加一个投票的按钮, 点一下就+1; 先在后台把数据库设计好, 然后使用代码, 手动完成”+1”的操作, 如果行得通, 证明数据库没问题; 然后在Controller中(控制层)进行测试, 配合指定的URL, 访问一次, 就+1; 如果也没问题; 在展示层, 设计button.
如此一来, 就把点击按钮这个操作, 拆分成三个步骤, 方便debug. 把大问题分解为小问题.
pluralize 使成复数形式
erb模板语言
<% %> loop或者condition statement
<%= %> 普通变量
习惯
在干事情之前, 清理一下电脑桌面, 把不必要的Chrome书签移到其他桌面, 把无关的应用也移到其他桌面. 保持使用的两个工作桌面的简洁, 打开勿扰模式, 把手机和IPad放在视线之外, 减少可能让自己分心的一切事物. 一般只留三个东西. Chrome浏览器; 记笔记的软件; 编译器(或编辑器)