我正在rails应用程序中创建国际化的语言环境文件,并且有一个我想要包含标签的网址,例如
html.erb
<%= t(foo.bar.xxxx)%>
yml文件
foo:bar: xxxx:“xxxx”
结果
& lt; a href = “/info/index.html"> xxxx< / a& gt;
打破了我的链接。我没有红宝石部分,所以不应该这样吗? 或者我应该在yml文件中没有html标签吗?
Rails版本是3.0.1 Ruby版本是1.8.7 p249
答案 0 :(得分:28)
您的HTML YAML密钥需要_html
后缀:
foo:
bar:
xxxx_html: "<strong>Some HTML Here</strong>"
执行此Rails会将字符串标记为html_safe
,并将呈现HTML而不是将其转换为>
和<
。
您还需要使用完整的密钥名称来引用它,当您致电xxxx
时,Rails不会自动看到_html后缀。
<%= t 'foo.bar.xxxx_html' %>
答案 1 :(得分:2)
Rails通过防止模型数据显示为实际标记来防止注入攻击。原始函数阻止了转换。
确实
<%= raw t(foo.bar.xxxx) %>
工作?