модуль ActionView::Helpers::OutputSafetyHelper
Публичные методы экземпляров
# File actionview/lib/action_view/helpers/output_safety_helper.rb, line 18 def raw(stringish) stringish.to_s.html_safe end
Этот метод выводит строку без экранирования. Поскольку экранирование тегов сейчас по умолчанию, это можно использовать, когда вы не хотите, чтобы Rails автоматически экранировал теги. Не рекомендуется, если данные поступают от ввода пользователя.
Например:
raw @user.name # => 'Jimmy <alert>Tables</alert>'
# File actionview/lib/action_view/helpers/output_safety_helper.rb, line 33
def safe_join(array, sep = $,)
sep = ERB::Util.unwrapped_html_escape(sep)
array.flatten.map! { |i| ERB::Util.unwrapped_html_escape(i) }.join(sep).html_safe
end Этот метод возвращает безопасную для HTML строку, аналогичную тому, что возвращает Array#join. Массив сплющивается, и все элементы, включая заданный разделитель, экранируются для HTML, если они не являются безопасными для HTML, а возвращаемая строка помечается как безопасная для HTML.
safe_join([raw("<p>foo</p>"), "<p>bar</p>"], "<br />")
# => "<p>foo</p><br /><p>bar</p>"
safe_join([raw("<p>foo</p>"), raw("<p>bar</p>")], raw("<br />"))
# => "<p>foo</p><br /><p>bar</p>"
# File actionview/lib/action_view/helpers/output_safety_helper.rb, line 43
def to_sentence(array, options = {})
options.assert_valid_keys(:words_connector, :two_words_connector, :last_word_connector, :locale)
default_connectors = {
words_connector: ", ",
two_words_connector: " and ",
last_word_connector: ", and "
}
if defined?(I18n)
i18n_connectors = I18n.translate(:'support.array', locale: options[:locale], default: {})
default_connectors.merge!(i18n_connectors)
end
options = default_connectors.merge!(options)
case array.length
when 0
"".html_safe
when 1
ERB::Util.html_escape(array[0])
when 2
safe_join([array[0], array[1]], options[:two_words_connector])
else
safe_join([safe_join(array[0...-1], options[:words_connector]), options[:last_word_connector], array[-1]], nil)
end
end Преобразует массив в строку, разделенную запятыми, где последний элемент соединяется связующим словом. Это html_safe-ориентированная версия метода Array#to_sentence из ActiveSupport.
© 2004–2019 David Heinemeier Hansson
Licensed under the MIT License.