CGI

[2001/03/17] by るびきち[外部]

CGIサポートライブラリ

Version 2.1.0

使用例

フォームの値を取得

require "cgi"
cgi = CGI.new
values = cgi['field_name']   # <== 'field_name' の配列

  # 'field_name' が指定されていなかったら、 (({[]}))を返す。
fields = cgi.keys            # <== field nameの配列


# フォームに 'field_name' というfield nameがあるときに真
cgi.has_key?('field_name')
cgi.has_key?('field_name')
cgi.include?('field_name')

フォームの値をHashで取得

require "cgi"
cgi = CGI.new
params = cgi.params

cgi.paramsはHashである。

cgi.params['new_field_name'] = ["value"]  # 新しいパラメータを加える
cgi.params['field_name'] = ["new_value"]  # パラメータの値を変える
cgi.params.delete('field_name')           # パラメータを消去
cgi.params.clear                          # 全パラメータを消去

フォームの値をファイルに保存

require "pstore"
db = PStore.new("query.db")
db.transaction do
  db["params"] = cgi.params
end

PStoreを参照。

ファイルからfield nameを読み込む

require "pstore"
db = PStore.new("query.db")
db.transaction do
  cgi.params = db["params"]
end

マルチパートなfield nameを取得

require "cgi"
cgi = CGI.new





values = cgi['field_name']   # <== field_nameの配列
values[0].read               # <== values[0]の本文
values[0].local_path         # <== values[0]のローカルファイルのパス
values[0].original_filename  # <== values[0]の元の名前
values[0].content_type       # <== values[0]のcontent_type

values[0]Tempfileクラスのメソッドを持つ。 (TempfileクラスのオブジェクトはFileクラスのメソッドを持つ。)

フォームの値が入っているものとしてローカルで実験

CGI::CGI_PARAMSCGI::CGI_COOKIESを設定してからCGI.newすると、あたかもフォームから入力があったかのようにローカルで実験できる。 ただし、両方とも設定しなければいけない。

#!/usr/bin/ruby
require 'cgi'

class CGI
  CGI_PARAMS={'form'=>['value']}
  CGI_COOKIES= nil
end

cgi = CGI.new
puts cgi['form'].first # => "value"

クッキーの値を取得

require "cgi"
cgi = CGI.new

values = cgi.cookies['name']  # <== 'name' の配列

  # 'name'が与えられてない場合は[]を返す。

names = cgi.cookies.keys      # <== クッキーの名前の配列

また、cgi.cookiesはHashである。

クッキーオブジェクトを取得

require "cgi"
cgi = CGI.new
for name, cookie in cgi.cookies
  cookie.expires = Time.now + 30
end
cgi.out("cookie" => cgi.cookies){"string"}

cgi.cookies # { "name1" => cookie1, "name2" => cookie2, ... }

require "cgi"
cgi = CGI.new
cgi.cookies['name'].expires = Time.now + 30
cgi.out("cookie" => cgi.cookies['name']){"string"}

あと、クッキーオブジェクトを作るを見ること。

環境変数を取得

require "cgi"
cgi = CGI.new
value = cgi.auth_type
  # ENV["AUTH_TYPE"]

<URL:http://www.w3.org/CGI/>[外部]を見ること。

AUTH_TYPE CONTENT_LENGTH CONTENT_TYPE GATEWAY_INTERFACE PATH_INFO PATH_TRANSLATED QUERY_STRING REMOTE_ADDR REMOTE_HOST REMOTE_IDENT REMOTE_USER REQUEST_METHOD SCRIPT_NAME SERVER_NAME SERVER_PORT SERVER_PROTOCOL SERVER_SOFTWARE

content_lengthserver_portIntegerを返し、その他はStringを返す。

HTTP_COOKIEHTTP_COOKIE2

value = cgi.raw_cookie
  # ENV["HTTP_COOKIE"]
value = cgi.raw_cookie2
  # ENV["HTTP_COOKIE2"]

その他の HTTP_*

value = cgi.accept
  # ENV["HTTP_ACCEPT"]
value = cgi.accept_charset
  # ENV["HTTP_ACCEPT_CHARSET"]

HTTP_ACCEPT HTTP_ACCEPT_CHARSET HTTP_ACCEPT_ENCODING HTTP_ACCEPT_LANGUAGE HTTP_CACHE_CONTROL HTTP_FROM HTTP_HOST HTTP_NEGOTIATE HTTP_PRAGMA HTTP_REFERER HTTP_USER_AGENT

$DEFAULT_OUTPUT ($>)へHTTPヘッダとHTML文字列を出力

require "cgi"

cgi = CGI.new("html3")  # HTML生成メソッドを追加
cgi.out() do
  cgi.html() do
    cgi.head{ cgi.title{"TITLE"} } +
    cgi.body() do
      cgi.form() do
        cgi.textarea("get_text") +
        cgi.br +
        cgi.submit
      end +
      cgi.pre() do
        CGI::escapeHTML(
          "params: " + cgi.params.inspect + "\n" +
          "cookies: " + cgi.cookies.inspect + "\n" +
          ENV.collect() do |key, value|
            key + " --> " + value + "\n"
          end.join("")
        )
      end
    end
  end
end


# HTML生成メソッドを追加
CGI.new("html3")    # html3.2
CGI.new("html4")    # html4.0 (Strict)
CGI.new("html4Tr")  # html4.0 Transitional
CGI.new("html4Fr")  # html4.0 Frameset

ファイルアップロード

ruby-list:25399[外部]

メソッド

CGI.escape(string)

文字列をURLエンコードする

例:
url_encoded_string = CGI::escape("string")
CGI.unescape(string)

URLエンコードされた文字列を元に戻す

例:
string = CGI::unescape("url encoded string")
CGI.escapeHTML(string)

HTMLの &\"<> をエスケープ

例:
CGI::escapeHTML("string")
CGI.unescapeHTML(string)

HTMLエスケープされた文字列を元に戻す

例:
CGI::unescapeHTML("HTML escaped string")
CGI.escapeElement(string, *element)

特定の要素だけをHTMLエスケープする。

例:
print CGI::escapeElement('<BR><A HREF="url"></A>', "A", "IMG")
  # => "<BR>&lt;A HREF="url"&gt;&lt;/A&gt"

print CGI::escapeElement('<BR><A HREF="url"></A>', ["A", "IMG"])
  # => "<BR>&lt;A HREF="url"&gt;&lt;/A&gt"
CGI.unescapeElement(string, *element)

特定の要素だけをHTMLエスケープから戻す。

例:          
print CGI::unescapeElement(
        CGI::escapeHTML('<BR><A HREF="url"></A>'), "A", "IMG")
  # => "&lt;BR&gt;<A HREF="url"></A>"

print CGI::unescapeElement(
        CGI::escapeHTML('<BR><A HREF="url"></A>'), ["A", "IMG"])
  # => "&lt;BR&gt;<A HREF="url"></A>"
CGI.rfc1123_date(time)

RFC:1123の日付文字列を作成

例:
CGI::rfc1123_date(Time.now)
  # => Sat, 1 Jan 2000 00:00:00 GMT
CGI#header(options = "text/html")

HTTPヘッダ文字列を作成

例:
header
  # Content-Type: text/html

header("text/plain")
  # Content-Type: text/plain

header({"nph"        => true,
        "status"     => "OK",  # == "200 OK"
          # "status"     => "200 GOOD",
        "server"     => ENV['SERVER_SOFTWARE'],
        "connection" => "close",
        "type"       => "text/html",
        "charset"    => "iso-2022-jp",
          # Content-Type: text/html; charset=iso-2022-jp
        "language"   => "ja",
        "expires"    => Time.now + 30,
        "cookie"     => [cookie1, cookie2],
        "my_header1" => "my_value"
        "my_header2" => "my_value"})

CGI#headerはcharsetを変換しない。ruby-list:35911[外部]

ステータス:

"OK"                  --> "200 OK"
"PARTIAL_CONTENT"     --> "206 Partial Content"
"MULTIPLE_CHOICES"    --> "300 Multiple Choices"
"MOVED"               --> "301 Moved Permanently"
"REDIRECT"            --> "302 Found"
"NOT_MODIFIED"        --> "304 Not Modified"
"BAD_REQUEST"         --> "400 Bad Request"
"AUTH_REQUIRED"       --> "401 Authorization Required"
"FORBIDDEN"           --> "403 Forbidden"
"NOT_FOUND"           --> "404 Not Found"
"METHOD_NOT_ALLOWED"  --> "405 Method Not Allowed"
"NOT_ACCEPTABLE"      --> "406 Not Acceptable"
"LENGTH_REQUIRED"     --> "411 Length Required"
"PRECONDITION_FAILED" --> "412 Rrecondition Failed"
"SERVER_ERROR"        --> "500 Internal Server Error"
"NOT_IMPLEMENTED"     --> "501 Method Not Implemented"
"BAD_GATEWAY"         --> "502 Bad Gateway"
"VARIANT_ALSO_VARIES" --> "506 Variant Also Negotiates"

CGI#header は、CGI#out を使わずに自力でHTMLを成生 して出力したい場合などに使います。

cgi = CGI.new('html3')
print cgi.header({"charset" => "Shift_JIS"})
print "<html><head><title>TITLE</title></head>\n"
print "<body>BODY</body></html>"
CGI#out(options = "text/html")

HTTPヘッダとブロックで与えられた文字列を$DEFAULT_OUTPUT ($>)へ出力。

cgi = CGI.new
cgi.out{ "string" }
  # Content-Type: text/html
  # Content-Length: 6
  #
  # string

cgi.out("text/plain"){ "string" }
  # Content-Type: text/plain
  # Content-Length: 6
  #
  # string

cgi.out({"nph"        => true,
         "status"     => "OK",  # == "200 OK"
         "server"     => ENV['SERVER_SOFTWARE'],
         "connection" => "close",
         "type"       => "text/html",
         "charset"    => "iso-2022-jp",
           # Content-Type: text/html; charset=iso-2022-jp
         "language"   => "ja",
         "expires"    => Time.now + (3600 * 24 * 30),
         "cookie"     => [cookie1, cookie2],
         "my_header1" => "my_value",
         "my_header2" => "my_value"}){ "string" }

HEADリクエスト("HEAD" == REQUEST_METHOD)の場合はHTTPヘッダのみを出力する。

charset"iso-2022-jp""euc-jp""shift_jis"である場合、 charsetを変換し、language"ja"にする。ruby-list:35911[外部]

CGI#print(*options)

出力。

例:
cgi = CGI.new
cgi.print    # default:  cgi.print == $DEFAULT_OUTPUT.print

CGI::Cookie

CGI::Cookie.new(name = "", *value)
CGI::Cookie#name
CGI::Cookie#name=
CGI::Cookie#value
CGI::Cookie#value=
CGI::Cookie#path
CGI::Cookie#path=
CGI::Cookie#domain
CGI::Cookie#domain=
CGI::Cookie#expires
CGI::Cookie#expires=
CGI::Cookie#secure
CGI::Cookie#secure=

クッキーオブジェクトを作成。

例:
cookie1 = CGI::Cookie::new("name", "value1", "value2", ...)
cookie1 = CGI::Cookie::new({"name" => "name", "value" => "value"})
cookie1 = CGI::Cookie::new({'name'    => 'name',
                            'value'   => ['value1', 'value2', ...],
                            'path'    => 'path',   # optional
                            'domain'  => 'domain', # optional
                            'expires' => Time.now, # optional
                            'secure'  => true      # optional
                           })

cgi.out({"cookie" => [cookie1, cookie2]}){ "string" }

name    = cookie1.name
values  = cookie1.value
path    = cookie1.path
domain  = cookie1.domain
expires = cookie1.expires
secure  = cookie1.secure

cookie1.name    = 'name'
cookie1.value   = ['value1', 'value2', ...]
cookie1.path    = 'path'
cookie1.domain  = 'domain'
cookie1.expires = Time.now + 30
cookie1.secure  = true
CGI::Cookie.parse(raw_cookie)

クッキー文字列の解析。

例:
cookies = CGI::Cookie::parse("raw_cookie_string")
  # { "name1" => cookie1, "name2" => cookie2, ... }
CGI::parse(query)

QUERY_STRINGの解析

例:    
params = CGI::parse("query_string")
  # {"name1" => ["value1", "value2", ...],
  #  "name2" => ["value1", "value2", ...], ... }
CGI.pretty(string, shift = " ")

HTMLを整形。

例:
print CGI::pretty("<HTML><BODY></BODY></HTML>")
  # <HTML>
  #   <BODY>
  #   </BODY>
  # </HTML>

print CGI::pretty("<HTML><BODY></BODY></HTML>", "\t")
  # <HTML>
  #         <BODY>
  #         </BODY>
  # </HTML>

さまざまなHTML要素

例:

cgi = CGI.new("html3")  # HTML生成メソッドを追加
cgi.element
cgi.element{ "string" }
cgi.element({ "ATTRILUTE1" => "value1", "ATTRIBUTE2" => "value2" })
cgi.element({ "ATTRILUTE1" => "value1", "ATTRIBUTE2" => "value2" }){ "string" }


# HTML生成メソッドを追加
CGI.new("html3")    # html3.2
CGI.new("html4")    # html4.0 (Strict)
CGI.new("html4Tr")  # html4.0 Transitional
CGI.new("html4Fr")  # html4.0 Frameset

A要素

CGI::HtmlExtension#a(href = "")

例:
a("url")
  # = a({ "HREF" => "url" })

BASE要素

CGI::HtmlExtension#base(href = "")

例:
base("url")
  # = base({ "HREF" => "url" })

BLOCKQUOTE要素

CGI::HtmlExtension#blockquote(cite = nil)

例:
blockquote("url"){ "string" }
  # = blockquote({ "CITE" => "url" }){ "string" }

CAPTION要素

CGI::HtmlExtension#caption(align = nil)

例:
caption("align"){ "string" }
  # = caption({ "ALIGN" => "align" }){ "string" }

CHECKBOX

CGI::HtmlExtension#checkbox(name = "", value = nil, checked = nil)

例:
checkbox("name")
  # = checkbox({ "NAME" => "name" })

checkbox("name", "value")
  # = checkbox({ "NAME" => "name", "VALUE" => "value" })

checkbox("name", "value", true)
  # = checkbox({ "NAME" => "name", "VALUE" => "value", "CHECKED" => true })

CHECKBOXグループ

CGI::HtmlExtension#checkbox_group(name = "", *values)

例:
checkbox_group("name", "foo", "bar", "baz")
  # <INPUT TYPE="checkbox" NAME="name" VALUE="foo">foo
  # <INPUT TYPE="checkbox" NAME="name" VALUE="bar">bar
  # <INPUT TYPE="checkbox" NAME="name" VALUE="baz">baz

checkbox_group("name", ["foo"], ["bar", true], "baz")
  # <INPUT TYPE="checkbox" NAME="name" VALUE="foo">foo
  # <INPUT TYPE="checkbox" SELECTED NAME="name" VALUE="bar">bar
  # <INPUT TYPE="checkbox" NAME="name" VALUE="baz">baz

checkbox_group("name", ["1", "Foo"], ["2", "Bar", true], "Baz")
  # <INPUT TYPE="checkbox" NAME="name" VALUE="1">Foo
  # <INPUT TYPE="checkbox" SELECTED NAME="name" VALUE="2">Bar
  # <INPUT TYPE="checkbox" NAME="name" VALUE="Baz">Baz

checkbox_group({ "NAME" => "name",
                 "VALUES" => ["foo", "bar", "baz"] })

checkbox_group({ "NAME" => "name",
                 "VALUES" => [["foo"], ["bar", true], "baz"] })

checkbox_group({ "NAME" => "name",
                 "VALUES" => [["1", "Foo"], ["2", "Bar", true], "Baz"] })

ファイルフィールド

CGI::HtmlExtension#file_field(name = "", size = 20, maxlength = nil)

例:
file_field("name")
  # <INPUT TYPE="file" NAME="name" SIZE="20">

file_field("name", 40)
  # <INPUT TYPE="file" NAME="name" SIZE="40">

file_field("name", 40, 100)
  # <INPUT TYPE="file" NAME="name" SIZE="40" MAXLENGTH="100">

file_field({ "NAME" => "name", "SIZE" => 40 })
  # <INPUT TYPE="file" NAME="name" SIZE="40">

FORM要素

CGI::HtmlExtension#form(method = "post", action = nil, enctype = "application/x-www-form-urlencoded")

例:
form{ "string" }
  # <FORM METHOD="post" ENCTYPE="application/x-www-form-urlencoded">string</FORM>

form("get"){ "string" }
  # <FORM METHOD="get" ENCTYPE="application/x-www-form-urlencoded">string</FORM>

form("get", "url"){ "string" }
  # <FORM METHOD="get" ACTION="url" ENCTYPE="application/x-www-form-urlencoded">string</FORM>

form({"METHOD" => "post", ENCTYPE => "enctype"}){ "string" }
  # <FORM METHOD="post" ENCTYPE="enctype">string</FORM>

hiddenフィールド

CGI::HtmlExtension#hidden(name = "", value = nil)

例:
hidden("name")
  # <INPUT TYPE="hidden" NAME="name">

hidden("name", "value")
  # <INPUT TYPE="hidden" NAME="name" VALUE="value">

hidden({ "NAME" => "name", "VALUE" => "reset", "ID" => "foo" })
  # <INPUT TYPE="hidden" NAME="name" VALUE="value" ID="foo">

HTML要素

CGI::HtmlExtension#html(attributes = {})

例:

html{ "string" }
  # <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"><HTML>string</HTML>

html({ "LANG" => "ja" }){ "string" }
  # <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"><HTML LANG="ja">string</HTML>

html({ "DOCTYPE" => false }){ "string" }
  # <HTML>string</HTML>

html({ "DOCTYPE" => '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">' }){ "string" }
  # <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"><HTML>string</HTML>

html({ "PRETTY" => "  " }){ "<BODY></BODY>" }
  # <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
  # <HTML>
  #   <BODY>
  #   </BODY>
  # </HTML>

html({ "PRETTY" => "\t" }){ "<BODY></BODY>" }
  # <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
  # <HTML>
  #         <BODY>
  #         </BODY>
  # </HTML>

html("PRETTY"){ "<BODY></BODY>" }
  # = html({ "PRETTY" => "  " }){ "<BODY></BODY>" }

html(if $VERBOSE then "PRETTY" end){ "HTML string" }

IMAGEボタン

CGI::HtmlExtension#image_button(src = "", name = nil, alt = nil)

例:
image_button("url")
  # <INPUT TYPE="image" SRC="url">

image_button("url", "name", "string")
  # <INPUT TYPE="image" SRC="url" NAME="name" ALT="string">

image_button({ "SRC" => "url", "ATL" => "strng" })
  # <INPUT TYPE="image" SRC="url" ALT="string">

IMG要素

CGI::HtmlExtension#img(src = "", alt = "", width = nil, height = nil)

例:
img("src", "alt", 100, 50)
  # <IMG SRC="src" ALT="alt" WIDTH="100" HEIGHT="50">

img({ "SRC" => "src", "ALT" => "alt", "WIDTH" => 100, "HEIGHT" => 50 })
  # <IMG SRC="src" ALT="alt" WIDTH="100" HEIGHT="50">

マルチパートフォーム

CGI::HtmlExtension#multipart_form(action = nil, enctype = "multipart/form-data")

例:
multipart_form{ "string" }
  # <FORM METHOD="post" ENCTYPE="multipart/form-data">string</FORM>

multipart_form("url"){ "string" }
  # <FORM METHOD="post" ACTION="url" ENCTYPE="multipart/form-data">string</FORM>

パスワードフィールド

CGI::HtmlExtension#password_field(name = "", value = nil, size = 40, maxlength = nil)

例:
password_field("name")
  # <INPUT TYPE="password" NAME="name" SIZE="40">

password_field("name", "value")
  # <INPUT TYPE="password" NAME="name" VALUE="value" SIZE="40">

password_field("password", "value", 80, 200)
  # <INPUT TYPE="password" NAME="name" VALUE="value" SIZE="80" MAXLENGTH="200">

password_field({ "NAME" => "name", "VALUE" => "value" })
  # <INPUT TYPE="password" NAME="name" VALUE="value">

ポップアップメニュー

CGI::HtmlExtension#popup_menu(name = "", *values)

例:
popup_menu("name", "foo", "bar", "baz")
  # <SELECT NAME="name">
  #   <OPTION VALUE="foo">foo</OPTION>
  #   <OPTION VALUE="bar">bar</OPTION>
  #   <OPTION VALUE="baz">baz</OPTION>
  # </SELECT>

popup_menu("name", ["foo"], ["bar", true], "baz")
  # <SELECT NAME="name">
  #   <OPTION VALUE="foo">foo</OPTION>
  #   <OPTION VALUE="bar" SELECTED>bar</OPTION>
  #   <OPTION VALUE="baz">baz</OPTION>
  # </SELECT>

popup_menu("name", ["1", "Foo"], ["2", "Bar", true], "Baz")
  # <SELECT NAME="name">
  #   <OPTION VALUE="1">Foo</OPTION>
  #   <OPTION SELECTED VALUE="2">Bar</OPTION>
  #   <OPTION VALUE="Baz">Baz</OPTION>
  # </SELECT>

popup_menu({"NAME" => "name", "SIZE" => 2, "MULTIPLE" => true,
            "VALUES" => [["1", "Foo"], ["2", "Bar", true], "Baz"] })
  # <SELECT NAME="name" MULTIPLE SIZE="2">
  #   <OPTION VALUE="1">Foo</OPTION>
  #   <OPTION SELECTED VALUE="2">Bar</OPTION>
  #   <OPTION VALUE="Baz">Baz</OPTION>
  # </SELECT>

ラジオボタン

CGI::HtmlExtension#radio_button(name = "", value = nil, checked = nil)

例:
radio_button("name", "value")
  # <INPUT TYPE="radio" NAME="name" VALUE="value">

radio_button("name", "value", true)
  # <INPUT TYPE="radio" NAME="name" VALUE="value" CHECKED>

radio_button({ "NAME" => "name", "VALUE" => "value", "ID" => "foo" })
  # <INPUT TYPE="radio" NAME="name" VALUE="value" ID="foo">

ラジオグループ

CGI::HtmlExtension#radio_group(name = "", *values)

例:
radio_group("name", "foo", "bar", "baz")
  # <INPUT TYPE="radio" NAME="name" VALUE="foo">foo
  # <INPUT TYPE="radio" NAME="name" VALUE="bar">bar
  # <INPUT TYPE="radio" NAME="name" VALUE="baz">baz

radio_group("name", ["foo"], ["bar", true], "baz")
  # <INPUT TYPE="radio" NAME="name" VALUE="foo">foo
  # <INPUT TYPE="radio" CHECKED NAME="name" VALUE="bar">bar
  # <INPUT TYPE="radio" NAME="name" VALUE="baz">baz

radio_group("name", ["1", "Foo"], ["2", "Bar", true], "Baz")
  # <INPUT TYPE="radio" NAME="name" VALUE="1">Foo
  # <INPUT TYPE="radio" CHECKED NAME="name" VALUE="2">Bar
  # <INPUT TYPE="radio" NAME="name" VALUE="Baz">Baz

radio_group({ "NAME" => "name",
              "VALUES" => ["foo", "bar", "baz"] })

radio_group({ "NAME" => "name",
              "VALUES" => [["foo"], ["bar", true], "baz"] })

radio_group({ "NAME" => "name",
              "VALUES" => [["1", "Foo"], ["2", "Bar", true], "Baz"] })

リセットボタン

CGI::HtmlExtension#reset(value = nil, name = nil)

例:
reset
  # <INPUT TYPE="reset">

reset("reset")
  # <INPUT TYPE="reset" VALUE="reset">

reset({ "VALUE" => "reset", "ID" => "foo" })
  # <INPUT TYPE="reset" VALUE="reset" ID="foo">

スクロールリスト

CGI::HtmlExtension#scrolling_list(name = "", *values)

例:

scrolling_list({"NAME" => "name", "SIZE" => 2, "MULTIPLE" => true,
                "VALUES" => [["1", "Foo"], ["2", "Bar", true], "Baz"] })
  # <SELECT NAME="name" MULTIPLE SIZE="2">
  #   <OPTION VALUE="1">Foo</OPTION>
  #   <OPTION SELECTED VALUE="2">Bar</OPTION>
  #   <OPTION VALUE="Baz">Baz</OPTION>
  # </SELECT>

SUBMITボタン

CGI::HtmlExtension#submit(value = nil, name = nil)

例:
submit
  # <INPUT TYPE="submit">

submit("ok")
  # <INPUT TYPE="submit" VALUE="ok">

submit("ok", "button1")
  # <INPUT TYPE="submit" VALUE="ok" NAME="button1">

submit({ "VALUE" => "ok", "NAME" => "button1", "ID" => "foo" })
  # <INPUT TYPE="submit" VALUE="ok" NAME="button1" ID="foo">

テキストフィールド

CGI::HtmlExtension#text_field(name = "", value = nil, size = 40, maxlength = nil)

例:
text_field("name")
  # <INPUT TYPE="text" NAME="name" SIZE="40">

text_field("name", "value")
  # <INPUT TYPE="text" NAME="name" VALUE="value" SIZE="40">

text_field("name", "value", 80)
  # <INPUT TYPE="text" NAME="name" VALUE="value" SIZE="80">

text_field("name", "value", 80, 200)
  # <INPUT TYPE="text" NAME="name" VALUE="value" SIZE="80" MAXLENGTH="200">

text_field({ "NAME" => "name", "VALUE" => "value" })
  # <INPUT TYPE="text" NAME="name" VALUE="value">

TEXTAREA要素

CGI::HtmlExtension#textarea(name = "", cols = 70, rows = 10)

例:
textarea("name")
  # = textarea({ "NAME" => "name", "COLS" => 70, "ROWS" => 10 })

textarea("name", 40, 5)
  # = textarea({ "NAME" => "name", "COLS" => 40, "ROWS" => 5 })

HISTORY