【问题标题】:i18n on Ruby on Rails, < and > gets replaced by &gt ; &lt ; when not intendedRuby on Rails 上的 i18n,< 和 > 被替换为 &gt ; &lt;无意时
【发布时间】:2011-04-28 17:00:27
【问题描述】:

我正在为 Rails 应用程序中的国际化创建语言环境文件,并有一个我想翻译的带有标签的 url,例如

html.erb

yml 文件

富:酒吧: xxxx:“xxxx”

结果

这会破坏我的链接。我在红宝石部分没有 h,所以这不应该工作吗? 还是我应该在 yml 文件中没有 html 标签?

Rails 版本是 3.0.1 Ruby 版本是 1.8.7 p249

【问题讨论】:

    标签: ruby-on-rails internationalization yaml escaping


    【解决方案1】:

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

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

    这样做 Rails 将把字符串标记为 html_safe 并将呈现 HTML 而不是将其转换为 &amp;gt;&amp;lt;

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

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

    【讨论】:

    • 这很好用,前缀也很方便识别,谢谢。
    【解决方案2】:

    Rails 通过防止模型数据显示为实际标记来防止注入攻击。 raw 函数会阻止这种转换。

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

    工作?

    【讨论】:

    • 这和另一个一样有效,不知道原始方法。这可能会派上用场,感谢您提供的信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多