ti-enxame.com

Use HTML dentro de um arquivo de tradução Rails

Eu tenho algumas traduções no meu aplicativo Rails (config/locale/[en | de] .yml) e utilizo-o nas minhas visualizações com <%=t "teasers.welcome" %>. Exemplo:

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

Em Rails 2.3.8, isso funciona muito bem, com Rails 3, 3, o HTML é escapado e traduzido para &lt;... Como posso impedir este formulário desta tradução e usar HTML em meus arquivos de tradução como em Rails 2.3.8?

44
Fu86

Suponho que é porque fazer

<%= t("blah") %>

em Rails 2.x, agora é o equivalente a fazer

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

quando você estiver usando Rails 3.

Do nota de versão s:

Alterne para o XSS padrão por escape para o Rails.

Para corrigir isso, e mais uma vez a partir das notas de versão:

Você não precisa mais chamar h(string) para escapar da saída HTML, ela está ativada por padrão em todos os modelos de exibição. Se você deseja a string sem escape, chame raw (string).

Então basta substituir

<%= t("blah") %>

de

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

Além de usar raw, há outra maneira não documentada (mas oficial) de fazer isso. Todas as teclas terminadas com _html são automaticamente renderizados sem escape.

Renomeie a chave de

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

para

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