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はエスケープされ、<
...どうすればこの翻訳を防止し、Rails 2.3.8のように翻訳ファイルでHTMLを使用できますか?
私はそうしているからだと思います
<%= t("blah") %>
Rails 2.x、今は
<%=h t("blah") %>
Rails 3.を使用している場合。
リリースノート sから:
RailsをデフォルトでオンにするXSSエスケープに切り替えます。
これを修正するには、リリースノートからもう一度:
HTML出力をエスケープするためにh(string)を呼び出す必要がなくなりました。すべてのビューテンプレートでデフォルトでオンになっています。エスケープされていない文字列が必要な場合は、raw(string)を呼び出します。
だから交換するだけ
<%= t("blah") %>
沿って
<%= raw t("blah") %>
raw
を使用する以外に、文書化されていない(しかし公式の)方法があります。 _html
で終わるすべてのキーは、エスケープされずに自動的にレンダリングされます。
からキーの名前を変更します
teasers:
welcome: "<strong>Welcome</strong> to the Website ..."
に
teasers:
welcome_html: "<strong>Welcome</strong> to the Website ..."