更新: 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 |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |