模組 CGI::HtmlExtension

提供 HTML 產生方法的 Mixin 模組。

例如,

cgi.a("http://www.example.com") { "Example" }
  # => "<A HREF=\"http://www.example.com\">Example</A>"

模組 Html3、Html4 等包含更基本的 HTML 產生方法(#title#h1 等)。

請參閱類別 CGI 以取得詳細範例。

公用實例方法

a(href = "") { || ... } 按一下以切換來源

產生錨點元素為字串。

href 可以是字串,提供 HREF 屬性的 URL,或可以是元素屬性的雜湊。

元素的主體是傳入的無參數區塊傳回的字串。

a("http://www.example.com") { "Example" }
  # => "<A HREF=\"http://www.example.com\">Example</A>"

a("HREF" => "http://www.example.com", "TARGET" => "_top") { "Example" }
  # => "<A HREF=\"http://www.example.com\" TARGET=\"_top\">Example</A>"
呼叫超類別方法
# File lib/cgi/html.rb, line 97
def a(href = "") # :yield:
  attributes = if href.kind_of?(String)
                 { "HREF" => href }
               else
                 href
               end
  super(attributes)
end
base(href = "") { || ... } 按一下以切換來源

產生文件基礎 URI 元素為 String

href 可以是字串,提供 HREF 屬性的基礎 URL,或可以是元素屬性的雜湊。

傳入的無參數區塊會被忽略。

base("http://www.example.com/cgi")
  # => "<BASE HREF=\"http://www.example.com/cgi\">"
呼叫超類別方法
# File lib/cgi/html.rb, line 115
def base(href = "") # :yield:
  attributes = if href.kind_of?(String)
                 { "HREF" => href }
               else
                 href
               end
  super(attributes)
end
blockquote(cite = {}) { || ... } 按一下以切換來源

產生區塊引用元素為字串。

cite 可以是字串,提供引述文字來源的 URI,或雜湊,提供元素的所有屬性,或可以省略,在這種情況下元素沒有屬性。

主體由傳入的無參數區塊提供

blockquote("http://www.example.com/quotes/foo.html") { "Foo!" }
  #=> "<BLOCKQUOTE CITE=\"http://www.example.com/quotes/foo.html\">Foo!</BLOCKQUOTE>
呼叫超類別方法
# File lib/cgi/html.rb, line 134
def blockquote(cite = {})  # :yield:
  attributes = if cite.kind_of?(String)
                 { "CITE" => cite }
               else
                 cite
               end
  super(attributes)
end
caption(align = {}) { || ... } 按一下以切換來源

產生表格標題元素為字串。

align 可以是字串,提供標題的對齊方式(top、bottom、left 或 right 之一)。它可以是元素所有屬性的雜湊。或者可以省略它。

元素的內文由傳入的無引數區塊提供。

caption("left") { "Capital Cities" }
  # => <CAPTION ALIGN=\"left\">Capital Cities</CAPTION>
呼叫超類別方法
# File lib/cgi/html.rb, line 154
def caption(align = {}) # :yield:
  attributes = if align.kind_of?(String)
                 { "ALIGN" => align }
               else
                 align
               end
  super(attributes)
end
checkbox(name = "", value = nil, checked = nil) 按一下以切換來源

以字串產生核取方塊輸入元素。

元素的屬性可以指定為三個引數,namevaluecheckedchecked 是布林值;如果為 true,將在元素中包含 CHECKED 屬性。

或者,可以將屬性指定為雜湊。

checkbox("name")
  # = checkbox("NAME" => "name")

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

checkbox("name", "value", true)
  # = checkbox("NAME" => "name", "VALUE" => "value", "CHECKED" => true)
# File lib/cgi/html.rb, line 180
def checkbox(name = "", value = nil, checked = nil)
  attributes = if name.kind_of?(String)
                 { "TYPE" => "checkbox", "NAME" => name,
                   "VALUE" => value, "CHECKED" => checked }
               else
                 name["TYPE"] = "checkbox"
                 name
               end
  input(attributes)
end
checkbox_group(name = "", *values) 按一下以切換來源

String 產生核取方塊元素的順序。

核取方塊都將具有相同的 name 屬性。每個核取方塊後面都會跟著一個標籤。每個值都會有一個核取方塊。每個值都可以指定為 String,它將同時用作 VALUE 屬性的值和該核取方塊的標籤。單一元素陣列具有相同的效果。

每個值也可以指定為三元素陣列。第一個元素是 VALUE 屬性;第二個是標籤;第三個是布林值,指定此核取方塊是否為 CHECKED。

每個值也可以指定為二元素陣列,方法是省略值元素(預設與標籤相同)或布林值 checked 元素(預設為 false)。

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" CHECKED 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" CHECKED 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"])
# File lib/cgi/html.rb, line 234
def checkbox_group(name = "", *values)
  if name.kind_of?(Hash)
    values = name["VALUES"]
    name = name["NAME"]
  end
  values.collect{|value|
    if value.kind_of?(String)
      checkbox(name, value) + value
    else
      if value[-1] == true || value[-1] == false
        checkbox(name, value[0],  value[-1]) +
        value[-2]
      else
        checkbox(name, value[0]) +
        value[-1]
      end
    end
  }.join
end
file_field(name = "", size = 20, maxlength = nil) 按一下以切換來源

以字串產生 File 上傳輸入元素。

元素的屬性可以指定為三個引數,namesizemaxlengthmaxlength 是檔案的 名稱 的最大長度,而不是檔案的 內容

或者,可以將屬性指定為雜湊。

請參閱 multipart_form() 以取得包含檔案上傳的表單。

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">
# File lib/cgi/html.rb, line 276
def file_field(name = "", size = 20, maxlength = nil)
  attributes = if name.kind_of?(String)
                 { "TYPE" => "file", "NAME" => name,
                   "SIZE" => size.to_s }
               else
                 name["TYPE"] = "file"
                 name
               end
  attributes["MAXLENGTH"] = maxlength.to_s if maxlength
  input(attributes)
end
form(method = "post", action = script_name, enctype = "application/x-www-form-urlencoded") { || ... } 按一下以切換來源

以字串產生表單元素。

method 應該是「get」或「post」,預設為後者。action 預設為目前的 CGI 腳本名稱。enctype 預設為「application/x-www-form-urlencoded」。

或者,可以將屬性指定為雜湊。

另請參閱 multipart_form() 以取得包含檔案上傳的表單。

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>
呼叫超類別方法
# File lib/cgi/html.rb, line 310
def form(method = "post", action = script_name, enctype = "application/x-www-form-urlencoded")
  attributes = if method.kind_of?(String)
                 { "METHOD" => method, "ACTION" => action,
                   "ENCTYPE" => enctype }
               else
                 unless method.has_key?("METHOD")
                   method["METHOD"] = "post"
                 end
                 unless method.has_key?("ENCTYPE")
                   method["ENCTYPE"] = enctype
                 end
                 method
               end
  if block_given?
    body = yield
  else
    body = ""
  end
  if @output_hidden
    body << @output_hidden.collect{|k,v|
      "<INPUT TYPE=\"HIDDEN\" NAME=\"#{k}\" VALUE=\"#{v}\">"
    }.join
  end
  super(attributes){body}
end
hidden(name = "", value = nil) 按一下以切換來源

產生一個隱藏輸入元素為字串。

元素的屬性可以指定為兩個參數,namevalue

或者,可以將屬性指定為雜湊。

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">
# File lib/cgi/html.rb, line 351
def hidden(name = "", value = nil)
  attributes = if name.kind_of?(String)
                 { "TYPE" => "hidden", "NAME" => name, "VALUE" => value }
               else
                 name["TYPE"] = "hidden"
                 name
               end
  input(attributes)
end
html(attributes = {}) { || ... } 按一下以切換來源

產生一個頂層 HTML 元素為字串。

元素的屬性指定為雜湊。偽屬性 “PRETTY” 可用於指定產生的 HTML 字串應縮排。“PRETTY” 也可指定為字串作為此方法的唯一參數。偽屬性 “DOCTYPE”,如果給定,用作開頭的 DOCTYPE SGML 標籤;它應包含此標籤的完整文字,包括尖括號。

html 元素的主體提供為區塊。

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" }
呼叫超類別方法
# File lib/cgi/html.rb, line 403
def html(attributes = {}) # :yield:
  if nil == attributes
    attributes = {}
  elsif "PRETTY" == attributes
    attributes = { "PRETTY" => true }
  end
  pretty = attributes.delete("PRETTY")
  pretty = "  " if true == pretty
  buf = "".dup

  if attributes.has_key?("DOCTYPE")
    if attributes["DOCTYPE"]
      buf << attributes.delete("DOCTYPE")
    else
      attributes.delete("DOCTYPE")
    end
  else
    buf << doctype
  end

  buf << super(attributes)

  if pretty
    CGI.pretty(buf, pretty)
  else
    buf
  end

end
image_button(src = "", name = nil, alt = nil) 按一下以切換來源

產生一個圖片按鈕輸入元素為字串。

src 是按鈕要使用的圖片的 URL。name 是輸入名稱。alt 是圖片的替代文字。

或者,可以將屬性指定為雜湊。

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", "ALT" => "string")
  # <INPUT TYPE="image" SRC="url" ALT="string">
# File lib/cgi/html.rb, line 448
def image_button(src = "", name = nil, alt = nil)
  attributes = if src.kind_of?(String)
                 { "TYPE" => "image", "SRC" => src, "NAME" => name,
                   "ALT" => alt }
               else
                 src["TYPE"] = "image"
                 src["SRC"] ||= ""
                 src
               end
  input(attributes)
end
img(src = "", alt = "", width = nil, height = nil) 按一下以切換來源

產生一個圖片元素為字串。

src 是圖片的 URL。alt 是圖片的替代文字。width 是圖片的寬度,而 height 是其高度。

或者,可以將屬性指定為雜湊。

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">
呼叫超類別方法
# File lib/cgi/html.rb, line 474
def img(src = "", alt = "", width = nil, height = nil)
  attributes = if src.kind_of?(String)
                 { "SRC" => src, "ALT" => alt }
               else
                 src
               end
  attributes["WIDTH"] = width.to_s if width
  attributes["HEIGHT"] = height.to_s if height
  super(attributes)
end
multipart_form(action = nil, enctype = "multipart/form-data") { || ... } 按一下以切換來源

產生一個具有多部分編碼的表單元素為 String

多部分編碼用於包含檔案上傳的表單。

action 是要執行的動作。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>
# File lib/cgi/html.rb, line 500
def multipart_form(action = nil, enctype = "multipart/form-data")
  attributes = if action == nil
                 { "METHOD" => "post", "ENCTYPE" => enctype }
               elsif action.kind_of?(String)
                 { "METHOD" => "post", "ACTION" => action,
                   "ENCTYPE" => enctype }
               else
                 unless action.has_key?("METHOD")
                   action["METHOD"] = "post"
                 end
                 unless action.has_key?("ENCTYPE")
                   action["ENCTYPE"] = enctype
                 end
                 action
               end
  if block_given?
    form(attributes){ yield }
  else
    form(attributes)
  end
end
password_field(name = "", value = nil, size = 40, maxlength = nil) 按一下以切換來源

產生一個密碼輸入元素為字串。

name 是輸入欄位的名稱。value 是其預設值。size 是輸入欄位顯示的大小。maxlength 是輸入密碼的最大長度。

或者,屬性可以指定為雜湊。

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">
# File lib/cgi/html.rb, line 542
def password_field(name = "", value = nil, size = 40, maxlength = nil)
  attributes = if name.kind_of?(String)
                 { "TYPE" => "password", "NAME" => name,
                   "VALUE" => value, "SIZE" => size.to_s }
               else
                 name["TYPE"] = "password"
                 name
               end
  attributes["MAXLENGTH"] = maxlength.to_s if maxlength
  input(attributes)
end
popup_menu(name = "", *values) 按一下以切換來源

產生一個 Select 元素為字串。

name 是元素的名稱。values 是可在選單中選取的選項。每個值可以是 字串 或一、二或三元素的 陣列。如果為 字串 或一元素的 陣列,則為該選項的值和顯示的文字。如果為三元素的 陣列,則元素為選項值、顯示文字和布林值,指定此選項是否一開始就選取。二元素版本省略選項值(預設與顯示文字相同)或布林值選取指定項(預設為 false)。

屬性和選項也可以指定為雜湊。在此情況下,選項指定為如上所述值的陣列,雜湊金鑰為「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>
別名為:scrolling_list
radio_button(name = "", value = nil, checked = nil) 按一下以切換來源

產生無線電按鈕輸入元素。

name 是輸入欄位的名稱。value 是選取時欄位的值。checked 指定欄位是否一開始就選取。

或者,可以將屬性指定為雜湊。

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">
# File lib/cgi/html.rb, line 646
def radio_button(name = "", value = nil, checked = nil)
  attributes = if name.kind_of?(String)
                 { "TYPE" => "radio", "NAME" => name,
                   "VALUE" => value, "CHECKED" => checked }
               else
                 name["TYPE"] = "radio"
                 name
               end
  input(attributes)
end
radio_group(name = "", *values) 按一下以切換來源

產生無線電按鈕輸入元素的順序,作為 字串

此功能與 checkbox_group() 相同。但是,群組中不允許選取多個無線電按鈕。

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"])
# File lib/cgi/html.rb, line 685
def radio_group(name = "", *values)
  if name.kind_of?(Hash)
    values = name["VALUES"]
    name = name["NAME"]
  end
  values.collect{|value|
    if value.kind_of?(String)
      radio_button(name, value) + value
    else
      if value[-1] == true || value[-1] == false
        radio_button(name, value[0],  value[-1]) +
        value[-2]
      else
        radio_button(name, value[0]) +
        value[-1]
      end
    end
  }.join
end
reset(value = nil, name = nil) 按一下以切換來源

產生重設按鈕輸入元素,作為 字串

這會將表單上的值重設為其初始值。value 是顯示在按鈕上的文字。name 是此按鈕的名稱。

或者,可以將屬性指定為雜湊。

reset
  # <INPUT TYPE="reset">

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

reset("VALUE" => "reset", "ID" => "foo")
  # <INPUT TYPE="reset" VALUE="reset" ID="foo">
# File lib/cgi/html.rb, line 720
def reset(value = nil, name = nil)
  attributes = if (not value) or value.kind_of?(String)
                 { "TYPE" => "reset", "VALUE" => value, "NAME" => name }
               else
                 value["TYPE"] = "reset"
                 value
               end
  input(attributes)
end
scrolling_list(name = "", *values)
別名為:popup_menu
submit(value = nil, name = nil) 按一下以切換來源

產生一個 submit 按鈕輸入元素,作為 String

value 是按鈕上顯示的文字。name 是輸入的名稱。

或者,可以將屬性指定為雜湊。

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">
# File lib/cgi/html.rb, line 750
def submit(value = nil, name = nil)
  attributes = if (not value) or value.kind_of?(String)
                 { "TYPE" => "submit", "VALUE" => value, "NAME" => name }
               else
                 value["TYPE"] = "submit"
                 value
               end
  input(attributes)
end
text_field(name = "", value = nil, size = 40, maxlength = nil) 按一下以切換來源

產生一個文字欄位輸入元素,作為 String

name 是輸入欄位的名稱。value 是它的初始值。size 是輸入區域的大小。maxlength 是接受輸入的最大長度。

或者,可以將屬性指定為雜湊。

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">
# File lib/cgi/html.rb, line 782
def text_field(name = "", value = nil, size = 40, maxlength = nil)
  attributes = if name.kind_of?(String)
                 { "TYPE" => "text", "NAME" => name, "VALUE" => value,
                   "SIZE" => size.to_s }
               else
                 name["TYPE"] = "text"
                 name
               end
  attributes["MAXLENGTH"] = maxlength.to_s if maxlength
  input(attributes)
end
textarea(name = "", cols = 70, rows = 10) { || ... } 按一下以切換來源

產生一個 TextArea 元素,作為 String

name 是文字區域的名稱。cols 是欄的數量,rows 是顯示中的列的數量。

或者,可以將屬性指定為雜湊。

主體由傳入的無參數區塊提供

textarea("name")
   # = textarea("NAME" => "name", "COLS" => 70, "ROWS" => 10)

textarea("name", 40, 5)
   # = textarea("NAME" => "name", "COLS" => 40, "ROWS" => 5)
呼叫超類別方法
# File lib/cgi/html.rb, line 808
def textarea(name = "", cols = 70, rows = 10)  # :yield:
  attributes = if name.kind_of?(String)
                 { "NAME" => name, "COLS" => cols.to_s,
                   "ROWS" => rows.to_s }
               else
                 name
               end
  super(attributes)
end