модуль ActionView::Helpers::TagHelper
Предоставляет методы для генерации HTML-тегов программно, когда вы не можете использовать Builder. По умолчанию они выводят XHTML-совместимые теги.
Константы
- BOOLEAN_ATTRIBUTES
- PRE_CONTENT_STRINGS
Публичные методы экземпляра
Возвращает секцию CDATA с заданным content. Секции CDATA используются для экранирования блоков текста, содержащих символы, которые в противном случае распознавались бы как разметка. Секции CDATA начинаются со строки <![CDATA[ и заканчиваются (и не могут содержать) строкой ]]>.
cdata_section("<hello world>")
# => <![CDATA[<hello world>]]>
cdata_section(File.read("hello_world.txt"))
# => <![CDATA[<hello from a text file]]>
cdata_section("hello]]>world")
# => <![CDATA[hello]]]]><![CDATA[>world]]>
# File actionview/lib/action_view/helpers/tag_helper.rb, line 116
def cdata_section(content)
splitted = content.to_s.gsub(']]>', ']]]]><![CDATA[>')
"<![CDATA[#{splitted}]]>".html_safe
end Возвращает HTML-тег блока типа name вокруг content. Добавляйте HTML-атрибуты, передавая хеш атрибутов в options. Вместо передачи содержимого в качестве аргумента, вы также можете использовать блок, в котором случае передаёте своё options в качестве второго параметра. Установите escape в false, чтобы отключить экранирование значений атрибутов.
Параметры
Хеш options используется с атрибутами без значения, такими как (disabled и readonly), которым вы можете присвоить значение true в хеше options. Вы можете использовать символы или строки для имён атрибутов.
Примеры
content_tag(:p, "Hello world!")
# => <p>Hello world!</p>
content_tag(:div, content_tag(:p, "Hello world!"), class: "strong")
# => <div class="strong"><p>Hello world!</p></div>
content_tag("select", options, multiple: true)
# => <select multiple="multiple">...options...</select>
<%= content_tag :div, class: "strong" do -%>
Hello world!
<% end -%>
# => <div class="strong">Hello world!</div> # File actionview/lib/action_view/helpers/tag_helper.rb, line 94
def content_tag(name, content_or_options_with_block = nil, options = nil, escape = true, &block)
if block_given?
options = content_or_options_with_block if content_or_options_with_block.is_a?(Hash)
content_tag_string(name, capture(&block), options, escape)
else
content_tag_string(name, content_or_options_with_block, options, escape)
end
end Возвращает экранированную версию html без влияния на существующие экранированные сущности.
escape_once("1 < 2 & 3")
# => "1 < 2 & 3"
escape_once("<< Accept & Checkout")
# => "<< Accept & Checkout"
# File actionview/lib/action_view/helpers/tag_helper.rb, line 128 def escape_once(html) ERB::Util.html_escape_once(html) end
Возвращает пустой HTML-тег типа name, который по умолчанию соответствует XHTML. Установите open в true, чтобы создать открытый тег, совместимый с HTML 4.0 и ниже. Добавьте HTML-атрибуты, передавая хеш атрибутов в options. Установите escape в false, чтобы отключить экранирование значений атрибутов.
Параметры
Вы можете использовать символы или строки для имён атрибутов.
Используйте true с булевыми атрибутами, которые могут отображаться без значения, как disabled и readonly.
Атрибуты HTML5 data-* могут быть установлены с помощью единственного ключа data указывающего на хеш под-атрибутов.
Для совместимости с конвенциями JavaScript под-атрибуты форматируются с дефисами. Например, ключ user_id будет отображаться как data-user-id и поэтому доступен как dataset.userId.
Значения кодируются в JSON, за исключением строк и символов. Это может быть полезно при использовании HTML5-осознающего .data() jQuery с 1.4.3.
Примеры
tag("br")
# => <br />
tag("br", nil, true)
# => <br>
tag("input", type: 'text', disabled: true)
# => <input type="text" disabled="disabled" />
tag("img", src: "open & shut.png")
# => <img src="open & shut.png" />
tag("img", {src: "open & shut.png"}, false, false)
# => <img src="open & shut.png" />
tag("div", data: {name: 'Stephen', city_state: %w(Chicago IL)})
# => <div data-name="Stephen" data-city-state="["Chicago","IL"]" />
# File actionview/lib/action_view/helpers/tag_helper.rb, line 67
def tag(name, options = nil, open = false, escape = true)
"<#{name}#{tag_options(options, escape) if options}#{open ? ">" : " />"}".html_safe
end
© 2004–2016 David Heinemeier Hansson
Licensed under the MIT License.