更新: 2017/05/29
更新: 2017/09/07 补充对ruby自身的扩张的放置位置
配置文件位置 | /config/routes.rb |
最简单的定义方法 |
get ('hello/index', to: 'hello#index')
请求接入1时,呼出2方法
两者一样时,可以省略第二个参数
get ('hello/index') | 自动配置路径
routes.rb
resources: controller-name | | | | | | | | |
|
迁移
migration | 表格的生成与修改
迁移文件: 为表格的生成与修改准备的文件
位置/db/migrate/20170527032900_create_books.rb |
| |
| |
| |
| |
视图控制器 | controller |
视图控制器位置 | /app/controllers/.....rb
例子/app/controllers/sample_controller.rb
P28 |
| |
| |
| |
| |
| |
视图 | view |
视图位置 |
视图位置 | /app/view/控制器名/方法名.rb
例子 /app/view/sample/action.html.erb
注意:后缀html.erb | | | | | | | | | | | | |
|
视图方法 |
超链接 |
方法定义 | link_to(body, url [, html_option]) | 参数含义 |
body: 链接的文字 | url: 网址(或者参数) | html_option: 对《a》指定的属性
例: class: 'sample' , title: 'also a sample' |
| 特殊的网址参数
对象 | 《% @books.each do |book| %》
《td》《%= link_to 'Show', book %》《/td》
《% end %》
链接对象是Book类的对象,Rails会获取book.id
然后链接目标(リンク先)的路径和book.id相同
也就是.../1, 2, 3 ...
.../为现在路径 | 视图助手
view helper |
路径设置
/config/routes.rb | resources: controller-name | 自动设置路径后
会自动生成如下方法 | | | | books_path | /books
注 | book_path(id) | /books/:id | new_book_path | /books/new | edit_book_path(id) | /books/:id/edit | | | | | | |
|
可选
弹出确认窗口 | data-confirm
data: {confirm: ' your message'} | | | | | | | | | |
|
可选
指定HTTP方法 | method: delete
放在option里 | | | | | | | | | | | | | | | | | | |
| 执行前呼出 |
方法定义 | before_action method, only: action | 参数含义 |
method 方法的标签
例 :sample | only: 需要设置预处理的函数标签的数组
例 [:sample1, :sample2,
...] |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| 输出 |
定义 | render (partial:) 'template', 参数:值 | 组块模板(partial template) | 命名规则_sample.htm.erb
开头带_ | 参数含义 | (partial:) 'template' 开头可省略,指定组块模板
参数:值 传入组块模板里的参数和附加的值 | | | | | 可选 |
status | 应答时使用的HTTP状态
为标签
:unprocessable_entity | location | 表示资源位置的url | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | |
| 生成表格 |
定义 | form_for(model) do |f|
...
end | 参数含义 |
model 模块对象(数据库单元对象)
... 表格本体 | | | | | | | | | |
| | | | | f.label | | f.text_field | f.text_field :property | f.date_select | | f.check_box | | f.submit | | | | | | | | | | | | | | | | | | | | | | | |
| 获取post数据 | param.require(:ModelName).permit(:test1,
test2, ...)
:ModelName
模块的名字标签
:test1, test2, ... 数据的名字标签 | 数据保存 | 模块对象.save
例: book.save
返回 true/false | 重定向 |
定义 | redirect_to url [, option]
例:
redirect_to @book, notice: 'Book was successfully created.'
| 参数含义 |
| option |
notice: | 指定重定向时传递的信息
可想本地变量一样读取 | | | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | |
| 数据更新 |
定义 | 模块对象.update(attrs)
返回值: true/false | 参数含义 | 模块对象:模块类的实例
attrs: [property-name: value,
...]
| 注意 | 使用前必须先选定
模块类.find | | | | | | | | | | | | | | |
| 数据搜索与
选定 |
定义 | ModelClass.find(params[:id])
ModelClass 模型类
params[...] 获取经由URL获得的量
params[:id]获得页面索引号 | | | | | | | | | | | | | | | | | | |
| 返回状态
P97 | head status
status: 响应的结果
例 head :no_content | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
模块 | model
|
位置 |
模块类 | /app/models/samples.rb
| 迁移脚本 |
/db/migrate/20161013021716_create_samples.rb | 测试数据 | /test/fixtures/samples.yml | 测试脚本 | /test/models/samples_test.rb | | | | |
|
数据库配置文件
database.yml |
YAML格式(YAML Ain't Markup Language)
位置 | config/database.yml | 值设定 | 参数名: 值
例子:
production: 1 | | production:
a: 1
b: 2 | | production: &test
a: 1
b: 2
c: 3 | 设定别称 | <<: *test | 呼出整个部分 | | |
| 三个模式 |
默认设置,
其他地方
会参照 | default: &defalut
adapter:sqlite3
pool: 5
timeout: 5000 | 开发模式 | development:
<<: *default
database: db/development.sqlite3 | 测试模式 | test:
<<: *default
database: db/development.sqlite3 | 产品模式 | production:
<<: *default
database: db/development.sqlite3 | | |
| 可设定的值 | 不同数据库有不同的可能
adapter | 数据库种类
sqlite3, mysql2, postgresql... | database | 数据库名
SOLite则为数据库路径 | host | 主机名/IP地址 | port | 接口号 | pool | 预备连接池 | timeout | 连接限制时间(单位毫秒) | encoding | 使用的文字编码 | username | 用户名 | password | 密码 | socket | 套接字(/tmp/mysql.sock)等 | | | | |
| | | | | | | | | | | | | | | | | | | | | | | | |
|
生成数据库 | rails db:migrate
不需要任何参数 |
读取测试数据 | rails db:fixtures:load FIXTURES=samples |
| |
| |
| |
| |
| |
| |
数据库相关方法 | |
搜索 |
定义 | ModelClass.find(params[:id])
ModelClass 模型类
params[...] 获取经由URL获得的量
params[:id]获得页面索引号 | | | | | | | | | | | | | | | | | | |
|
数据保存 | 模块对象.save
例: book.save
返回 true/false |
数据更新 | |
| |
| |
| |
| |
| |
| |
配置文件 | /config/ |
总览 |
/config | | | | | application.rb | | 所有环境的共同设定 | | routes.rb | | 路径设定 | | /enviroment | | 每个环境的设定 | | | development.rb | 开发者模式 | | | test.rb | 测试模式 | | | production.rb | 产品模式 | | /initializers | | 初始化 | | | assets.rb | 编译对象声明 | | | backtrace_silencers.rb | | | | cookies_serializer.rb | 签名,密码的序列号 | | | filter_parameter_logging.rb | 从日志除外的参数信息 | | | inflections.rb | 单复数规则 | | | mime_types.rb | 可使用的内容类型 | | | new_framework_defaults.rb | 默认值被改变的参数 | | | session_store.rb | | | /locales | | 为了国际化的资源文件 | | 自己添加的 | | | | | | | | | | |
|
设定方法 | config.参数名 = 值 |
主要可设定参量 |
基本 | cache_class | 应用类要不要缓存
默认
dev false
test true
prod true | | cache_store | 缓存保存位置
:memory_store
:file_store
:mem_cache_store
等 | | colorize_logging | 是否对日志上色
默认 true | | autoload_paths | | | asset_host | | | log_level | | | logger | | | log_tags | | | time_zone | | | i18n.default_locale | | | | Active Record | active_record.logger | | | active_record.schema_format | | | activer_record.timestamped_migrations | | | | | Action Controller | action_controller.logger | | |
action_controller.perform_caching | | | session_store | | | | | Action View | action_view.default_form_builder | | | action_view.logger | | | action_view.field_error_proc | | |
|
读取 | YMAL.load(
File.read("#{Rails.root}/config/my_config/yml")
)[Rails.env]
含义:
读取文件,并且把当前环境[Rails.env]下的信息取出来 |
| |
| |
| |
| |
模板文件位置 | /app/views/控制器名/
自己新建,方法名.html.erb |
插入代码 |
插入代码 |
《% ... %》 |
打印值 |
《%= ... %》 |
|
注释 |
普通注释 |
《%# ... %》 |
内部注释
一行 |
# |
跨行注释 |
《% if false %》 ... 《% end %》 |
跨行注释
=在行头 |
《%
=begin
...
=end
%》 |
html标准注释
对客户端可见 |
《!-- ... --》 |
|
url匹配模式 |
/books/:id(.:format)
:开头的是占位符
:id id号
:format 格式,默认html
带()的可省略(即有默认值)
|
任务注释 |
格式 | # TODO: ...
# FIXME: ...
# OPTIMIZE ... | 查看 | rails notes | 个别查看 | rails notes:todo
rails notes:fixme
rails notes:optimize | | | | | | | | | | | | | | |
|
| |
对ruby自身的扩张 | 位置 /config/initializers/
内部自己随意放,我个人
/config/initializers/extention/xxxx.rb |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |