0

我的locales.yml文件中有这个使用link_to帮助程序的密钥。

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

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

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

但我必须重构它以使用link_to帮助程序。

问题是 sanitize 正在一起过滤erb标签(“需要银行授权”之后什么都没有出现),我找不到允许erb标签并正确呈现标签的方法link_to。另一方面,摆脱 sanitize 会呈现erb包含标签的字符串。

erbyml 文件中是否允许使用标签?

4

1 回答 1

1

要解析该 ERB 标记,您可以创建类似 locales.yml.erb
的内容但是再次检查 Rails 是否在内部解析 ERB yml 会很麻烦。
即使它正在解析,那么 link_to 助手是否可用。


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

# 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 安全翻译的更多信息

于 2020-10-24T06:18:19.257 回答