Ruby on Rails 上的 i18n,<和>被替换为 > <<当无意时
我正在 Rails 应用程序中创建用于国际化的语言环境文件,并且有一个我想要使用包含的标签进行翻译的 url,例如
html.erb
<%= t(foo.bar.xxxx) %>
yml 文件
富:酒吧: xxxx:“xxxx”
结果
这破坏了我的链接。我的 ruby 部分没有 h,所以这不应该起作用吗? 或者我应该在 yml 文件中不包含 html 标签?
Rails 版本是 3.0.1 Ruby 版本是 1.8.7 p249
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您的 HTML YAML 键需要有一个
_html
后缀:执行此操作,Rails 会将字符串标记为
html_safe
并将渲染出 HTML,而不是将其转换为& 。 gt;
和<
。您还需要使用完整的键名来引用它,当您调用
xxxx
时,Rails 不会自动看到 _html 后缀。Your HTML YAML keys need to have a
_html
suffix:Doing this Rails will mark the string has
html_safe
and will render out the HTML instead of converting it to>
and<
.You need to reference it with the full key name as well, Rails doesn't automatically see the _html suffix when you call
xxxx
.Rails 通过阻止模型数据显示为实际标记来防止注入攻击。 raw 函数会阻止这种转换。
有效吗
?
Rails is preventing injection attacks by preventing model data from being displayed as actual markup. The raw function prevents that conversion.
Does
work?