根据 ruby docs,translate
(or t
) helper 委托I18n#translate
但还执行几个附加功能,其中包括:“如果密钥具有后缀,它会将翻译标记为安全 HTML _html
”。
我希望它在视图和控制器中都应该同样工作,但根据我的经验,它不会:t(:hello_html)
在视图中按预期工作(将翻译标记为 html_safe),但在调用时它不会将结果标记为安全 html从控制器。
要重现该问题,您可以添加hello_html: '<i>Hello world</i>'
到您locales/en.yml
的flash.now[:notice] = t(:hello_html)
任何控制器的任何方便操作中。对我来说,这导致在 Flash 消息区域中出现转义的 html 标记,这对我来说是一个意外的结果。
我的问题是:
- 还有其他人经历过或能够重现此问题吗?
- 它是什么:一个 Rails 错误、一个特性,或者只是我的项目独特的“奇怪”?
- 有什么简单的方法可以解决这个问题吗?
(在轨道 3.2.11 和 3.2.13 中测试)