модуль ActionView::Helpers::OutputSafetyHelper
Общедоступные методы экземпляров
# File actionview/lib/action_view/helpers/output_safety_helper.rb, line 16 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 31
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 41
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]])
end
end Преобразует массив в предложение с запятыми, где последний элемент соединяется с помощью соединительного слова. Это версия, учитывающая html_safe, метода Array#to_sentence из ActiveSupport.
© 2004–2018 David Heinemeier Hansson
Licensed under the MIT License.