Spec-Zone.ru › Ruby on Rails 5.1

модуль ActionView::Helpers::OutputSafetyHelper

Публичные методы экземпляра

raw(stringish) Показать исходный код
# 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>'
safe_join(array, sep = $,) Показать исходный код
# 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>&lt;br /&gt;&lt;p&gt;bar&lt;/p&gt;"

safe_join([raw("<p>foo</p>"), raw("<p>bar</p>")], raw("<br />"))
# => "<p>foo</p><br /><p>bar</p>"
to_sentence(array, options = {}) Показать исходный код
# 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]], nil)
  end
end

Преобразует массив в предложение с запятыми, где последний элемент соединяется с помощью соединительного слова. Это версия, учитывающая html_safe, метода Array#to_sentence из ActiveSupport.

© 2004–2018 David Heinemeier Hansson
Licensed under the MIT License.

Spec-Zone.ru

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