39、Ruby CGI 类方法和实例方法

Ruby 的 CGI 类提供了大量的类方法和实例方法,方便我们创建 CGI 程序

Ruby CGI 类方法

序号 方法描述
1 CGI::new([level="query"])
创建 CGI 对象。query可以是以下值:query:没有 HTML 生成输出html3:HTML3.2html4:HTML4.0 Stricthtml4Tr:HTML4.0 Transitionalhtml4Fr:HTML4.0 Frameset
2 CGI::escape(str)
使用 URL 编码来转义字符串
3 CGI::unescape(str)
对通过 escape() 编码的字符串进行解码
4 CGI::escapeHTML(str)
编码 HTML 特殊字符, 包括: & < >
5 CGI::unescapeHTML(str)
解码 HTML 特殊字符, 包括: & < >
6 CGI::escapeElement(str[, element...])
在指定的 HTML 元素中编码 HTML 特殊字符
7 CGI::unescapeElement(str, element[, element...])
在指定的 HTML 元素中解码 HTML 特殊字符
8 CGI::parse(query)
解析查询字符串,并返回包含哈希的 键=》值 对
9 CGI::pretty(string[, leader=" "])
返回整齐的HTML格式
如果指定了leader,它将写入到每一行的开头。leader默认值为两个空格
10 CGI::rfc1123_date(time)
根据 RFC-1123 来格式化时间 (例如, Tue, 2 Jun 2018 00:00:00 GMT)

CGI 实例方法

下表列出了 CGI::new 的对象的所有方法

我们假设 c 是 CGI:new 的实例

序号 方法描述
1 c[ name]
返回一个数组,包含了对应字段名为name的值
2 c.checkbox( name[, value[, check=false]])
c.checkbox(options)
返回 HTML 字符串用于定义 checkbox 字段。标签的属性可以以一个哈希函数作为参数传递
3 c.checkbox_group( name, value...)
c.checkbox_group( options)
返回 HTML 字符串用于定义 checkbox 组。标签的属性可以以一个哈希函数作为参数传递
4 c.file_field( name[, size=20[, max]])
c.file_field( options)
返回定义 file 字段的HTML字符串
5 c.form([ method="post"[, url]]) { ...}
c.form( options)
返回定义 form 表单的HTML字符串。 如果指定了代码块,将作为表单内容输出。标签的属性可以以一个哈希函数作为参数传递
6 c.cookies
返回 CGI::Cookie 对象,包含了cookie 中的键值对
7 c.header([ header])
返回 CGI 头部的信息。如果 header 参数是哈希值,其键 - 值对,用于创建头部信息
8 c.hidden( name[, value])
c.hidden( options)
返回定义一个隐藏字段的HTML字符串。标签的属性可以以一个哈希函数作为参数传递
9 c.image_button( url[, name[, alt]])
c.image_button( options)
返回定义一个图像按钮的HTML字符串。标签的属性可以以一个哈希函数作为参数传递
10 c.keys
返回一个数组,包含了表单的字段名
11 c.key?( name)
c.has_key?( name)
c.include?(name)
如果表单包含了指定的字段名返回 true
12 c.multipart_form([ url[, encode]]) { ...}
c.multipart_form( options) {...}
返回定义一个多媒体表单(multipart)的HTML字符串。标签的属性可以以一个哈希函数作为参数传递
13 c.out([ header]) { ...}
生成 HTML 并输出。使用由块的输出来创建页面的主体生成的字符串
14 c.params
返回包含表单字段名称和值的哈希值
15 c.params= hash
设置使用字段名和值
16 c.password_field( name[, value[, size=40[, max]]])
c.password_field( options)
返回定义一个password字段的HTML字符串。标签的属性可以以一个哈希函数作为参数传递
17 c.popup_menu( name, value...)
c.popup_menu( options)
c.scrolling_list( name, value...)
c.scrolling_list( options)
返回定义一个弹出式菜单的HTML字符串。标签的属性可以以一个哈希函数作为参数传递
18 c.radio_button( name[, value[, checked=false]])
c.radio_button( options)
返回定义一个radio字段的HTML字符串。标签的属性可以以一个哈希函数作为参数传递
19 c.radio_group( name, value...)
c.radio_group(options)
返回定义一个radio按钮组的HTML字符串。标签的属性可以以一个哈希函数作为参数传递
20 c.reset( name[, value])
c.reset( options)
返回定义一个reset按钮的HTML字符串。 标签的属性可以以一个哈希函数作为参数传递
21 c.text_field( name[, value[, size=40[, max]]])
c.text_field( options)
返回定义一个text字段的HTML字符串。标签的属性可以以一个哈希函数作为参数传递
22 c.textarea( name[, cols=70[, rows=10]]) { ...}
c.textarea( options) { ...}
返回定义一个textarea字段的HTML字符串。 如果指定了块,代码块输出的字符串将作为 textarea 的内容。 标签的属性可以以一个哈希函数作为参数传递

CGI HTML 生成方法

Ruby 语言 CGI 模块可以使用相应的 HTML 标签名方法来创建 HTML 标签

gen_html.cgi

# !/usr/bin/ruby -w
# -*- encoding:utf-8 -*-
# filename: gen_html.cgi
# author: DDKK.COM 弟弟快看,程序员编程资料站(www.ddkk.com)
# Copyright © 2015-2065 www.ddkk.com. All rights reserved.
require "cgi"
cgi = CGI.new("html5")
cgi.out{
   cgi.html{
      cgi.head{ "\n"+cgi.title{"This Is a Test"} } +
      cgi.body{ "\n"+
         cgi.form{"\n"+
            cgi.hr +
            cgi.h1 { "A Form: " } + "\n"+
            cgi.textarea("get_text") +"\n"+
            cgi.br +
            cgi.submit
         }
      }
   }
}

CGI 实例属性

属性 返回值
accept 可接受的 MIME 类型
accept_charset 可接受的字符集
accept_encoding 可接受的编码
accept_language 可接受的语言
auth_type 可接受的类型
raw_cookie Cookie 数据 (原字符串)
content_length 内容长度(Content length)
content_type 内容类型(Content type)
From Client e-mail 地址
gateway_interface CGI 版本
path_info 路径
path_translated 转换后的路径
Query_string 查询字符串
referer 之前访问网址
remote_addr 客户端主机地址(IP)
remote_host 客户端主机名
remote_ident 客户端名
remote_user 经过身份验证的用户
request_method 请求方法(GET, POST, 等。)
script_name 参数名
server_name 服务器名
server_port 服务器端口
server_protocol 服务器协议
server_software 服务器软件
user_agent 用户代理(User agent)