Rails 3 портит мою вспышку! - PullRequest
       0

Rails 3 портит мою вспышку!

2 голосов
/ 05 октября 2010

У меня есть flash_helper, который я неудобно скачал из какого-то веб-учебника, который теперь возвращается, чтобы ударить меня по голове.С хорошей стороны, я уверен, что многим талантливым программистам здесь будет легко.:)

# application_helper
def flash_helper
[:notice, :warning, :message].map { |f| content_tag(:div, flash[f], :class => f) if flash[f] }
end

Этот код в сочетании с <% = flash_helper%> в моих представлениях приводит к созданию следующего HTML-кода:

[&quot;&lt;div class=\&quot;notice\&quot;&gt;Your account has been reactivated.&lt;/div&gt;&quot;, nil, nil]

..., который отображается какэта довольно непривлекательная строка в самом представлении:

["<div class=\"notice\">Your account has been reactivated.</div>", nil, nil]

Как мне переписать код, чтобы разобраться в этом?


[ноль, ноль, ноль]

Приведенная выше строка отправляется во все мои просмотры приведенным выше кодом flash_helper, когда нет вспышки.Как можно переписать этот код, чтобы он ничего не выводил при отсутствии вспышки?

Ответы [ 2 ]

2 голосов
/ 05 октября 2010

Вам нужно запустить html_safe для всей вашей строки в массиве.

# application_helper
def flash_helper
  [:notice, :warning, :message].map { |f| 
    content_tag(:div, flash[f].html_safe, :class => f) if flash[f] 
  }.compact
end
0 голосов
/ 05 октября 2010

По умолчанию Rails 3 экранирует HTML, если не указано иное. Все, что вам нужно сделать, это вызвать .html_safe для генерируемой строки. Вот краткий обзор:

HTML SAFE

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...