Spec-Zone.ru › Ruby 3.2

модуль CGI::HtmlExtension

Модуль-миксин, предоставляющий методы для генерации HTML.

Например,

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

Модули Html3, Html4 и т. д. содержат более базовые методы генерации HTML (#title, #h1, и т. д.).

См. класс CGI для подробного примера.

Публичные методы экземпляра

a(href = "") { || ... } Show source
# 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

Создать элемент Anchor в виде строки.

href может быть строкой, указывающей URL для атрибута HREF, или хешем атрибутов элемента.

Тело элемента — это строка, возвращаемая переданным безаргументным блоком.

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>"
Calls superclass method
base(href = "") { || ... } Show source
# 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

Создать базовый элемент Document URI в виде String.

href может быть строкой, указывающей базовый URL для атрибута HREF, или хешем атрибутов элемента.

Переданный безаргументный блок игнорируется.

base("http://www.example.com/cgi")
  # => "<BASE HREF=\"http://www.example.com/cgi\">"
Calls superclass method
blockquote(cite = {}) { || ... } Show source
# 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

Создать элемент BlockQuote в виде строки.

cite может быть строкой, указывающей URI для источника цитируемого текста, хешем, указывающим все атрибуты элемента, или может быть опущено, в этом случае элемент не будет иметь атрибутов.

Тело предоставляется переданным безаргументным блоком.

blockquote("http://www.example.com/quotes/foo.html") { "Foo!" }
  #=> "<BLOCKQUOTE CITE=\"http://www.example.com/quotes/foo.html\">Foo!</BLOCKQUOTE>
Calls superclass method
caption(align = {}) { || ... } Show source
# 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

Создать элемент заголовка таблицы в виде строки.

align может быть строкой, указывающей выравнивание заголовка (одно из top, bottom, left или right). Это может быть хеш всех атрибутов элемента. Или может быть опущено.

Тело элемента предоставляется переданным безаргументным блоком.

caption("left") { "Capital Cities" }
  # => <CAPTION ALIGN=\"left\">Capital Cities</CAPTION>
Calls superclass method
checkbox(name = "", value = nil, checked = nil) Show source
# 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

Создать элемент флажка ввода в виде строки.

Атрибуты элемента могут быть указаны в виде трёх аргументов, name, value, и checked. checked — это булево значение; если 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)
checkbox_group(name = "", *values) Show source
# 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

Создать последовательность элементов флажков в виде String.

Все флажки будут иметь одинаковый атрибут name. За каждым флажком следует метка. Для каждого значения будет один флажок. Каждое значение может быть указано в виде String, которое будет использоваться как значение атрибута VALUE, так и в качестве метки для этого флажка. Одноэлементный массив имеет тот же эффект.

Каждое значение может также быть указано в виде трёхэлементного массива. Первый элемент — атрибут VALUE; второй — метка; и третий — булево значение, указывающее, отмечен ли этот флажок.

Каждое значение может также быть указано в виде двуэлементного массива, пропустив либо элемент значения (по умолчанию совпадает с меткой), либо булевый элемент 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_field(name = "", size = 20, maxlength = nil) Show source
# 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

Создать элемент ввода загрузки File в виде строки.

Атрибуты элемента могут быть указаны в виде трёх аргументов, name, size, и maxlength. maxlength — это максимальная длина имени файла, а не его содержимого.

В качестве альтернативы атрибуты могут быть указаны в виде хеша.

См. 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">
form(method = "post", action = script_name, enctype = "application/x-www-form-urlencoded") { || ... } Show source
# 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

Создать элемент формы в виде строки.

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>
Calls superclass method
hidden(name = "", value = nil) Show source
# 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

Создать скрытый элемент ввода в виде строки.

Атрибуты элемента могут быть указаны в виде двух аргументов, name и value.

В качестве альтернативы атрибуты могут быть указаны в виде хеша.

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(attributes = {}) { || ... } Show source
# 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

Создать главный 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" }
Calls superclass method
image_button(src = "", name = nil, alt = nil) Show source
# 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

Создать элемент кнопки изображения ввода в виде строки.

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">
img(src = "", alt = "", width = nil, height = nil) Show source
# 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

Создать элемент изображения в виде строки.

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">
Calls superclass method
multipart_form(action = nil, enctype = "multipart/form-data") { || ... } Show source
# 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

Создать элемент формы с многочастным кодированием в виде 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>
password_field(name = "", value = nil, size = 40, maxlength = nil) Показать исходный код
# 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

Генерирует элемент ввода пароля в виде строки.

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">
popup_menu(name = "", *values) Показать исходный код
# File lib/cgi/html.rb, line 597
def popup_menu(name = "", *values)

  if name.kind_of?(Hash)
    values   = name["VALUES"]
    size     = name["SIZE"].to_s if name["SIZE"]
    multiple = name["MULTIPLE"]
    name     = name["NAME"]
  else
    size = nil
    multiple = nil
  end

  select({ "NAME" => name, "SIZE" => size,
           "MULTIPLE" => multiple }){
    values.collect{|value|
      if value.kind_of?(String)
        option({ "VALUE" => value }){ value }
      else
        if value[value.size - 1] == true
          option({ "VALUE" => value[0], "SELECTED" => true }){
            value[value.size - 2]
          }
        else
          option({ "VALUE" => value[0] }){
            value[value.size - 1]
          }
        end
      end
    }.join
  }

end

Генерирует элемент выбора (Select) в виде строки.

name — имя элемента. values — это опции, которые можно выбрать из меню выбора. Каждое значение может быть String или одномерным, двухмерным или трехмерным Array. Если это String или одномерный Array, это одновременно значение опции и текст, отображаемый для неё. Если это трехмерный Array, элементы представляют значение опции, отображаемый текст и логическое значение, указывающее, выбрана ли эта опция по умолчанию. Двухмерный вариант опускает либо значение опции (по умолчанию совпадает с текстом для отображения), либо флаг выбора (по умолчанию — 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) Показать исходный код
# 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

Генерирует элемент радиокнопки Input.

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">
radio_group(name = "", *values) Показать исходный код
# 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

Генерирует последовательность элементов радиокнопок Input в виде String.

Работает так же, как 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"])
reset(value = nil, name = nil) Показать исходный код
# 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

Генерирует элемент кнопки сброса Input в виде String.

Сбрасывает значения формы до их начальных значений. 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">
scrolling_list(name = "", *values)
Псевдоним для: popup_menu
submit(value = nil, name = nil) Показать исходный код
# 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

Генерирует элемент кнопки отправки Input в виде 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">
text_field(name = "", value = nil, size = 40, maxlength = nil) Показать исходный код
# 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

Генерирует текстовое поле Input в виде 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">
textarea(name = "", cols = 70, rows = 10) { || ... } Показать исходный код
# 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

Генерирует элемент 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)
Вызов метода суперкласса

Ruby Core © 1993–2022 Yukihiro Matsumoto
Licensed under the Ruby License.
Ruby Standard Library © contributors
Licensed under their own licenses.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API