Jer*_*ker 10 ruby-on-rails internationalization html-safe
我正在使用自动表单标签帮助程序来创建我的表单标签并通过i18n支持将它们翻译,但是,我想在标签中包含HTML,而我无法弄清楚如何使HTML安全.
例如:
en:
helpers:
label:
product:
name: 'Your Product Name <small>Try to be creative</small>'
Run Code Online (Sandbox Code Playgroud)
结束为:
<label for="product_name">Your Product Name <Try to be creative></label>
Run Code Online (Sandbox Code Playgroud)
但我希望它是:
<label for="product_name">Your Product Name <small>Try to be creative</small></label>
Run Code Online (Sandbox Code Playgroud)
有没有办法让我将翻译指定为html_safe,以便在输出之前不进行编码?
此外,这似乎是HTML设置的最具语义的方式,但如果我完全以错误的方式接近这一点,我愿意接受建议.
谢谢 :)
更新:
<%= form_for @product do |f| %>
<%= f.label :name %>
<%= f.text_field :name %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
chr*_*mcg 15
在rails3中自动生成普通密钥html的方法是将_html或.html附加到密钥名称.例如name_html.这只能通过视图中的translate/t方法工作,即不能通过I18n.t这无论如何都不会在这里工作,因为标准表单助手不会尝试该键的版本.
创建自己的表单构建器是建议的方法.你也可以这样做
f.label :name, t('helpers.label.product.name_html')
Run Code Online (Sandbox Code Playgroud)
如果这只发生在几个地方.
Pet*_*ong 12
不知道你的实际助手是怎样的,但你可以html_safe轻松地这样做(前提是你的标签价值不会被其他用户输入).
就像是: t("helpers.label.product.name").html_safe
如果这不起作用,请给出辅助方法的实现,或仅输出结果的行.
======更新======
感谢您更新的代码,现在我知道什么是最好的答案:D
如果你真的想要,我也不知道helpers.label.product.name.
但是我认为还有另一种方式会更好,这就是他所遵循的定义:
en:
activerecord:
attributes:
product:
labels:
name: "Your Product Name <small>Try to be creative</small>"
Run Code Online (Sandbox Code Playgroud)
如果您不想构建自己的自定义表单构建器,请使用以下命令:
= f.label :name, Product.human_attribute_name("labels.name").html_safe
Run Code Online (Sandbox Code Playgroud)
实际上,如果您定义自己的表单构建器,则可以轻松地重新定义标签方法以自动生成文本.
| 归档时间: |
|
| 查看次数: |
12986 次 |
| 最近记录: |