Rails: экранирование array.join с html в разделителе - PullRequest
4 голосов
/ 06 марта 2012

У меня есть массив строк, содержащих несохраненное содержимое (пользовательский ввод).

Я хочу объединить эти строки в своем шаблоне, разделив их <br />.

Я пытался:

somearray.join("<br />")

Но это также ускользнет от спаратора.

Есть ли обходной путь, учитывая, что содержимое массива обязательно должно быть экранировано?

Ответы [ 3 ]

3 голосов
/ 06 марта 2012

Есть ли причина, по которой это должен быть тег <br />? Не могли бы вы использовать вместо этого список?

<ul>
  <% somearray.each do |item| %>
    <%= content_tag :li, item %>
  <% end %>
</ul>
2 голосов
/ 06 марта 2012

Вы пробовали это?

raw somearray.join("<br />")
1 голос
/ 04 ноября 2014

raw и h предоставляют способы выборочного применения этого поведения по умолчанию.

<%= raw user_values_array.map {|user_value| h user_value }.join('<br />') %>

Более того, в Rails 3.1 для этой цели введено safe_join(array, sep).При использовании с html_safe он может делать то, что вам нужно.

<%= safe_join(user_values_array, "<br />".html_safe) %>

Документация

...