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

Rails5入门的更多相关文章

  1. rails5 后台入门(api mode)

    1. Installation (Centos为例) 1.1安装rvm (http://rvm.io/) gpg2 --recv-keys 409B6B1796C275462A1703113804BB ...

  2. Angular2入门系列教程7-HTTP(一)-使用Angular2自带的http进行网络请求

    上一篇:Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数 感觉这篇不是很好写,因为涉及到网络请求,如果采用真实的网络请求,这个例子大家拿到手估计还要自己写一个web ...

  3. ABP入门系列(1)——学习Abp框架之实操演练

    作为.Net工地搬砖长工一名,一直致力于挖坑(Bug)填坑(Debug),但技术却不见长进.也曾热情于新技术的学习,憧憬过成为技术大拿.从前端到后端,从bootstrap到javascript,从py ...

  4. Oracle分析函数入门

    一.Oracle分析函数入门 分析函数是什么?分析函数是Oracle专门用于解决复杂报表统计需求的功能强大的函数,它可以在数据中进行分组然后计算基于组的某种统计值,并且每一组的每一行都可以返回一个统计 ...

  5. Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数

    上一篇:Angular2入门系列教程5-路由(一)-使用简单的路由并在在路由中传递参数 之前介绍了简单的路由以及传参,这篇文章我们将要学习复杂一些的路由以及传递其他附加参数.一个好的路由系统可以使我们 ...

  6. Angular2入门系列教程5-路由(一)-使用简单的路由并在在路由中传递参数

    上一篇:Angular2入门系列教程-服务 上一篇文章我们将Angular2的数据服务分离出来,学习了Angular2的依赖注入,这篇文章我们将要学习Angualr2的路由 为了编写样式方便,我们这篇 ...

  7. Angular2入门系列教程4-服务

    上一篇文章 Angular2入门系列教程-多个组件,主从关系 在编程中,我们通常会将数据提供单独分离出来,以免在编写程序的过程中反复复制粘贴数据请求的代码 Angular2中提供了依赖注入的概念,使得 ...

  8. wepack+sass+vue 入门教程(三)

    十一.安装sass文件转换为css需要的相关依赖包 npm install --save-dev sass-loader style-loader css-loader loader的作用是辅助web ...

  9. wepack+sass+vue 入门教程(二)

    六.新建webpack配置文件 webpack.config.js 文件整体框架内容如下,后续会详细说明每个配置项的配置 webpack.config.js直接放在项目demo目录下 module.e ...

随机推荐

  1. 使用idea搭建ssh项目

    参考: https://www.cnblogs.com/getchen/p/8036709.html 需要自己提前在数据库中建好表 然后连接数据库通过侧边栏的persistence来生成实体类和相应的 ...

  2. 概率dp呜呜

    概率dp有环怎么办? 答案可劲迭代 ,然后可劲消元 , 怎么消? 我就不知道了. 呵呵

  3. Mysql UPDATE 操作时含 Limit 注意事项

    在update时,可以使用limit来设置,更新的条数,但下面这句sql语句是错误的. LIMIT ,; //错误提示:ERROR 1064 (42000): You have an error in ...

  4. Codeforces913E. Logical Expression

    现有串x=11110000,y=11001100,z=10101010,通过这三个串只用与或非三种操作到达给定的串,优先级非>或>与,可以加括号,问表达式最短的里面字典序最小的是谁,有&l ...

  5. Uva - 11181 Probability|Given (条件概率)

    设事件B为一共有r个人买了东西,设事件Ai为第i个人买了东西. 那么这个题目实际上就是求P(Ai|B),而P(Ai|B)=P(AiB)/P(B),其中P(AiB)表示事件Ai与事件B同时发生的概率,同 ...

  6. Ubuntu 16.04通过Magent搭建Memcached集群(转)

    一.下载Magent 官网:https://code.google.com/archive/p/memagent/downloads 离线版本:(链接: https://pan.baidu.com/s ...

  7. MongoDB小结12 - update【多文档更新】

    当一次更新一个文档无法满足我们的脚步时,我们可以选择一次更新多个文档,及在update的第四个参数的位置添上true,及做多文档更新,建议就算不做多文档更新也显式的在第四个参数上置false,这样明确 ...

  8. HDU 5074 Hatsune Miku 2014 Asia AnShan Regional Contest dp(水

    简单dp #include <stdio.h> #include <cstring> #include <iostream> #include <map> ...

  9. 自己构建的Lumbda表达式

    自己构建的Lumbda表达式 定义接口: package com.stono.lambda; public interface Add { public void add(int x, int y); ...

  10. UVA10081-Tight Words(递推)

    题目链接 题意:给出一个0到k的序列,要求出有每相邻的两个数之间的差不差过1的子序列的概率. 思路:递推.dp[i][j]表示长度为i而且j结尾的子序列的个数. 注意.假设用符合子序列个数除以从个数. ...