如何在正在清理的YML文件中使用link_to帮助程序?

问题描述

我的locales.yml文件中有使用link_to助手的密钥。

payment_types:
   credit_card: "Requires bank authorization. <%= link_to 'Tutorial','www.linktotutorial.com',target: '_blank' %>"

以前,我们使用的标签中带有href以及sanitize,如下所示:

sanitize(t("payment_types.#{payment_type}"),tags: %w(a),attributes: %w(target href)),payment_type

但是我必须重构它才能使用link_to帮助器。

问题在于,消毒已一起过滤erb标签(“需要银行授权”之后什么也没有出现),我找不到允许erb标签并呈现{ {1}}正确。 另一方面,要消除卫生,则将包含link_to标签的字符串呈现出来。

yml文件中甚至允许erb标签吗?

解决方法

要解析该ERB标签,您可以创建诸如locales.yml.erb之类的内容
但是再次要检查Rails是否在内部解析ERB yml会很麻烦。
即使正在解析,link_to helper还是可用。


相反,我建议一种简单的方法:

# locales.yml
payment_types:
   credit_card_html: "Requires bank authorization. %{titorial_link}"
# Usage in views
= t("payment_types.#{payment_type}_html",tutorial_link: link_to('Tutorial','www.linktotutorial.com',target: '_blank'))

请注意后缀_html。用于HTML安全翻译。
详细了解HTML安全翻译here