Spec-Zone.ru › Ruby 2.5

модуль 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 = "") { || ... } Показать исходный код
# File lib/cgi/html.rb, line 96
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>"
Вызывает метод суперкласса
base(href = "") { || ... } Показать исходный код
# File lib/cgi/html.rb, line 114
def base(href = "") # :yield:
  attributes = if href.kind_of?(String)
                 { "HREF" => href }
               else
                 href
               end
  super(attributes)
end

Генерирует элемент Document Base URI как строку.

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

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

base("http://www.example.com/cgi")
  # => "<BASE HREF=\"http://www.example.com/cgi\">"
Вызывает метод суперкласса
blockquote(cite = {}) { || ... } Показать исходный код
# File lib/cgi/html.rb, line 133
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>
Вызывает метод суперкласса
caption(align = {}) { || ... } Показать исходный код
# File lib/cgi/html.rb, line 153
def caption(align = {}) # :yield:
  attributes = if align.kind_of?(String)
                 { "ALIGN" => align }
               else
                 align
               end
  super(attributes)
end

Генерирует элемент заголовка таблицы (Table Caption) как строку.

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

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

caption("left") { "Capital Cities" }
  # => <CAPTION ALIGN=\"left\">Capital Cities</CAPTION>
Вызывает метод суперкласса
checkbox(name = "", value = nil, checked = nil) Показать исходный код
# File lib/cgi/html.rb, line 179
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) как строку.

Атрибуты элемента могут быть заданы тремя аргументами, 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) Показать исходный код
# File lib/cgi/html.rb, line 233
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

Генерирует последовательность элементов ввода типа "флажок" (checkbox) как строку.

У всех флажков будет одинаковый атрибут name. Каждый флажок сопровождается меткой. Флажок будет для каждого значения. Каждое значение может быть задано как строка, которая будет использоваться как значение атрибута VALUE и как метка для этого флажка. Массив с одним элементом имеет тот же эффект.

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

Каждое значение также может быть задано в виде массива из двух элементов, опустив либо элемент значения (по умолчанию совпадает с меткой), либо элемент boolean 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) Показать исходный код
# File lib/cgi/html.rb, line 275
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

Генерирует элемент ввода для загрузки файла как строку.

Атрибуты элемента могут быть заданы тремя аргументами, 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") { || ... } Показать исходный код
# File lib/cgi/html.rb, line 309
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>
Вызывает метод суперкласса
hidden(name = "", value = nil) Показать исходный код
# File lib/cgi/html.rb, line 350
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 = {}) { || ... } Показать исходный код
# File lib/cgi/html.rb, line 402
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», если задан, используется как ведущая тэг SGML DOCTYPE; он должен содержать весь текст этого тега, включая угловые скобки.

Тело элемента 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" }
Вызывает метод суперкласса
image_button(src = "", name = nil, alt = nil) Показать исходный код
# File lib/cgi/html.rb, line 447
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) Показать исходный код
# File lib/cgi/html.rb, line 473
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">
Вызывает метод суперкласса
multipart_form(action = nil, enctype = "multipart/form-data") { || ... } Показать исходный код
# File lib/cgi/html.rb, line 499
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

Генерирует элемент формы с кодировкой multipart как строку.

Кодировка multipart используется для форм, включающих загрузку файлов.

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 541
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 596
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 — это параметры, которые можно выбрать в меню Select. Каждое значение может быть строкой или массивом из одного, двух или трех элементов. Если строкой или массивом из одного элемента, то это одновременно значение этого параметра и текст, отображаемый для него. Если массивом из трех элементов, то элементы — значение параметра, отображаемый текст и логическое значение, определяющее, выбран ли этот параметр по умолчанию. Двухэлементный вариант опускает либо значение параметра (по умолчанию совпадает с отображаемым текстом), либо флаг выбранного параметра (по умолчанию 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 645
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

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

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 684
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

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

Это работает так же, как 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 719
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

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

Это сбрасывает значения формы до их начальных значений. 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 749
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

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

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 781
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

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

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 807
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 как строку.

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–2017 Yukihiro Matsumoto
Licensed under the Ruby License.
Ruby Standard Library © contributors
Licensed under their own licenses.

Spec-Zone.ru

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