Spec-Zone.ru › Ruby 2.6

модуль 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 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>"
Вызывает метод суперкласса
base(href = "") { || ... } Показать исходный код
# 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 Base URI в виде String.

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

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

base("http://www.example.com/cgi")
  # => "<BASE HREF=\"http://www.example.com/cgi\">"
Вызывает метод суперкласса
blockquote(cite = {}) { || ... } Показать исходный код
# 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>
Вызывает метод суперкласса
caption(align = {}) { || ... } Показать исходный код
# 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

Генерирует элемент 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 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

Генерирует элемент Input типа 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 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

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

У всех элементов checkbox будет одинаковый атрибут name. Каждый элемент checkbox сопровождается меткой. Будет один checkbox для каждого значения.

Каждое значение может быть задано как String, которое будет использоваться как для атрибута VALUE, так и для метки checkbox. Массив с одним элементом имеет тот же эффект.

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

Каждое значение также может быть задано как массив из двух элементов, опуская либо элемент значения (по умолчанию совпадает с меткой), либо логический элемент 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 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") { || ... } Показать исходный код
# 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

Генерирует элемент формы (Form) в виде строки.

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

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

Атрибуты элемента могут быть заданы двумя аргументами, 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 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”, если задан, используется как ведущий тег 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 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

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

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

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

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

Генерирует элемент формы (Form) с многочастотным кодированием в виде 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, элементы представляют собой значение параметра, отображаемый текст и булево значение, указывающее, выбран ли этот параметр по умолчанию. Двумерная версия опускает либо значение параметра (по умолчанию, совпадает с отображаемым текстом), либо спецификатор выбранного булевого значения (по умолчанию, ложь).

Атрибуты и параметры также могут быть заданы как хэш. В этом случае параметры задаются как массив значений, как описано выше, с ключом хэша «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

Генерирует элемент радиокнопки (radio button).

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

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

Генерирует элемент сброса формы (reset button) как 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

Генерирует элемент отправки формы (submit button) как 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

Генерирует текстовое поле ввода как 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–2017 Yukihiro Matsumoto
Licensed under the Ruby License.
Ruby Standard Library © contributors
Licensed under their own licenses.

Spec-Zone.ru

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