модуль ActionView::Helpers::OutputSafetyHelper
Помощники Action View для вывода без экранирования
Открытые методы экземпляра
# 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([tag.p("foo"), "<p>bar</p>"], "<br>")
# => "<p>foo</p><br><p>bar</p>"
safe_join([tag.p("foo"), tag.p("bar")], tag.br)
# => "<p>foo</p><br><p>bar</p>"
# File actionview/lib/action_view/helpers/output_safety_helper.rb, line 42
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 и соответствует методу ActiveSupport Array#to_sentence.
© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.