web-dev-qa-db-ja.com

Rails翻訳ファイル内でHTMLを使用する

Rails application(config/locale/[en | de] .yml)にいくつかの翻訳があり、ビューで<%=t "teasers.welcome" %>。例:

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

Rails 2.3.8では、これは問題なく機能します。Rails 3の場合、HTMLはエスケープされ、&lt;...どうすればこの翻訳を防止し、Rails 2.3.8のように翻訳ファイルでHTMLを使用できますか?

44
Fu86

私はそうしているからだと思います

<%= t("blah") %>

Rails 2.x、今は

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

Rails 3.を使用している場合。

リリースノート sから:

RailsをデフォルトでオンにするXSSエスケープに切り替えます。

これを修正するには、リリースノートからもう一度:

HTML出力をエスケープするためにh(string)を呼び出す必要がなくなりました。すべてのビューテンプレートでデフォルトでオンになっています。エスケープされていない文字列が必要な場合は、raw(string)を呼び出します。

だから交換するだけ

<%= t("blah") %>

沿って

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

rawを使用する以外に、文書化されていない(しかし公式の)方法があります。 _htmlで終わるすべてのキーは、エスケープされずに自動的にレンダリングされます。

からキーの名前を変更します

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

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