码迷,mamicode.com
首页 > 其他好文 > 详细

HeadFirst Ruby 第十五章总结 Saving and loading data(一)

时间:2019-04-02 18:29:36      阅读:161      评论:0      收藏:0      [点我收藏+]

标签:ams   格式   处理   cto   存储   gem   完整   inspect   setting   

前言

在上一章讲述了如何进行基础的操作,比如 处理 GET 请求的 get route, 再比如下载 gem 等等方面的知识.
在这一章节,作者告诉我们如何储存、处理数据.
整个过程分三步走:

  1. 首先,当 user 提交了一个 form 之后, 我们需要 create 一个对应的 Movie 的 object.
  2. 然后,我们将 Ruby object 储存进一个格式为 .yml 的 file 中
  3. 当 user 点击一个 object 的 ID 之后,能够从 .yml 格式的 file 中得到一个新的 HTML 页面,进而获取详细信息.

1?? create 一个对应的 Movie 的 object

第一步: Setting the HTML form to send a POST request

原理:两个 attribute

首先,我们需要确保 POST 请求是完整的,因此在 HTML 的 <form> tag 里,需要两个 attribute:

  1. method:即 POST 这个 HTTP method
  2. action:即提交到所在资源库的 path

格式:

<form method="post" action="/movies/create">

第二步: Setting up a post route

原理:

处理 GET 请求的 Sinatra 的 route 名字叫 get, POST 请求的叫 post.
params 是伴随 post 方法的一个参数,这个参数是一个 hash, 它包含了 form data from the request.

格式:

post(‘/movies/create‘) do
"Received: #{params.inspect}"
end

?过程三步走的第一步

 

首先,当 user 提交了一个 form 之后, 我们需要 create 一个对应的 Movie 的 object.

 

post(‘/movies/create‘) d0
@movie = Movie.new
@movie.title = params[‘title‘]
@movie.director = params[‘director‘]
@movie.year = params[‘year‘]
end

2?? 将数据存储在 .yml 格式的 file 中

关于 YAML

YAML 定义:

YAML 不是标记语言,而是一个 standard for representing objects and other data.

YAML 功能:

  1. 用于将 object 的数据储存成为字符串格式
  2. 相逆的,用于将字符串格式的内容转变为 object

与 Ruby 的关系

Ruby 中的 ‘yaml‘ 模块可以将 Ruby 中的 objects 转换为 YAML 格式的 file 储存起来.

格式:

require ‘yaml‘

该模块可供调用的 method

  • dump 用于将 object 转换为一个 string 
  • load 用于将一个 string 转换为 object

关于 YAML::Store

‘yaml‘ 仅仅可以进行转换,而无法将其内容储存为一个 file在 YAML library 中包含了 YAML::Store 这个 class, 它可以将 object 储存为 disk 中的 file.

格式

调用库:

require ‘yaml/store‘

读写:

store = YAML:Store.new(‘my_file.yml‘)

?储存数据(过程三步走的第二步)

其格式与 hash 很相似,都需要一个 key 和一个响应的 value.
transaction是储存数据时需要执行的方法,用于 prevent other programs from writing to the file until the block exits.

store.transaction do
store["my key"] = "my value"
store["key two"] = "value two"
end





HeadFirst Ruby 第十五章总结 Saving and loading data(一)

标签:ams   格式   处理   cto   存储   gem   完整   inspect   setting   

原文地址:https://www.cnblogs.com/FBsharl/p/10644294.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!