Подтвердить что ты не робот

Использовать HTML внутри файла перевода Rails

У меня есть некоторые переводы в приложении Rails (config/locale/[en | de].yml), и я использую его в своих представлениях с <%=t "teasers.welcome" %>. Пример:

teasers:
    welcome: "<strong>Welcome</strong> to the Website ..."

В Rails 2.3.8 это работает отлично, с Rails 3, HTML экранируется и переводится на &lt;... Как я могу предотвратить эту форму этого перевода и использовать HTML в своих файлах перевода, например, в Rails 2.3. 8?

4b9b3361

Ответ 1

Я предполагаю, что, поскольку

<%= t("blah") %>

в rails 2.x, теперь эквивалентно выполнению

<%=h t("blah") %>

когда вы используете рельсы 3.

Из примечание к выпуску s:

Переключиться на экранирование XSS по умолчанию для рельсов.

Чтобы исправить это, и еще раз из примечаний к выпуску:

Вам больше не нужно вызывать h (string) для выхода из HTML-вывода, он по умолчанию во всех шаблонах. если ты хотите получить строку без вызова, вызвать сырец (строка).

Так что просто замените

<%= t("blah") %>

<%= raw t("blah") %>

Ответ 2

Кроме использования raw, существует другой недокументированный (но официальный) способ сделать это. Все ключи, заканчивающиеся на _html, автоматически отображаются без сохранения.

Переименуйте ключ из

teasers:
    welcome: "<strong>Welcome</strong> to the Website ..."

к

teasers:
    welcome_html: "<strong>Welcome</strong> to the Website ..."