首页 文章

i18n在Ruby on Rails上,<和>被&gt;取代&lt;什么时候不打算

提问于
浏览
6

我正在rails应用程序中创建国际化的语言环境文件,并且有一个我想要翻译的URL,例如包含标签

html.erb

<%= t(foo.bar.xxxx)%>

yml文件

foo:bar:xxxx:“xxxx”

结果

&lt; a href =“/ info / index.html”&gt; xxxx </ a&gt;

这打破了我的链接 . 我没有红宝石部分,所以不应该这样吗?或者我应该在yml文件中没有html标签?

Rails版本是3.0.1 Ruby版本是1.8.7 p249

2 回答

  • 2

    您的HTML YAML密钥需要 _html 后缀:

    foo:
      bar:
        xxxx_html: "<strong>Some HTML Here</strong>"
    

    执行此Rails将标记字符串 html_safe 并将呈现HTML而不是将其转换为 &gt;&lt; .

    您还需要使用完整的密钥名称来引用它,当您调用 xxxx 时,Rails不会自动看到_html后缀 .

    <%= t 'foo.bar.xxxx_html' %>
    
  • 28

    Rails通过防止模型数据显示为实际标记来防止注入攻击 . 原始函数阻止了转换 .

    是否

    <%= raw t(foo.bar.xxxx) %>
    

    工作?

相关问题