更新: 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.'
  
 参数含义
 url  地址
 option 各种可选
 
 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