2010-12-07 18 views
10

Estoy usando el creador automático de etiquetas para crear mis etiquetas de formulario y hacerlas traducir a través del soporte i18n, sin embargo, quiero tener HTML en la etiqueta y no puedo Descubre cómo hacer que HTML sea seguro.Rails 3: Usar HTML en i18n formar traducciones de ayuda

Por ejemplo:

en: 
    helpers: 
    label: 
     product: 
     name: 'Your Product Name <small>Try to be creative</small>' 

termina como:

<label for="product_name">Your Product Name &lt;Try to be creative&gt;</label> 

Pero quiero que sea:

<label for="product_name">Your Product Name <small>Try to be creative</small></label> 

¿Hay alguna forma para mí especificar la traducción como html_safe para que no se codifique antes de la salida?

Además, esta parece ser la forma más semántica para la configuración del HTML, pero estoy abierto a sugerencias si me estoy acercando a este camino completamente equivocado.

Gracias :)

Actualizado:

<%= form_for @product do |f| %> 
    <%= f.label :name %> 
    <%= f.text_field :name %> 
<% end %> 

Respuesta

12

no saben cómo es su ayudante real, pero se puede usar html_safe a hacerlo fácilmente (siempre que el valor de su etiqueta no se introducirá por otros usuarios).

algo como: t("helpers.label.product.name").html_safe

Si esto no funciona, por favor, dar a su aplicación de su método de ayuda, o sólo las líneas de salida al resultado.

====== ====== ACTUALIZADO

Gracias a su código actualizado, ahora sé cuál es la mejor respuesta: D

No sé demasiado si realmente quiere helpers.label.product.name.

Pero hay otra manera, creo que sería mejor, que es definir como él lo siguiente:

en: 
    activerecord: 
    attributes: 
     product: 
     labels: 
      name: "Your Product Name <small>Try to be creative</small>" 

Si no desea construir su propia forma personalizada constructor, utilice esto:

= f.label :name, Product.human_attribute_name("labels.name").html_safe 

En realidad, si define su propio generador de formularios, es fácil redefinir el método de la etiqueta para generar su texto automáticamente.

+0

estoy usando el estándar ayudante de rieles: http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i -label –

+0

¿Así que estás usando un modelo? ¿Te importaría pegar tu código aquí? – PeterWong

+0

Agregué el uso a la pregunta original. Solo estoy usando el formador Rails estándar para un modelo. –

14

La forma de hacer que una clave normal sea segura automáticamente en html rails3 es agregar _html o .html al nombre de la clave. P.ej. name_html. Esto solo funciona a través del método translate/t en la vista, es decir, no a través de I18n.t Sin embargo, esto no va a funcionar aquí de todos modos ya que el helper de formulario estándar no prueba esa versión de la clave.

Crear su propio generador de formularios es el camino a seguir según lo sugerido. También podría hacer

f.label :name, t('helpers.label.product.name_html') 

Si esto solo sucede en un par de lugares.

-8

La otra opción es hacer lo siguiente:

name: '<span>Your Product Name <small>Try to be creative</small></span>' 
Cuestiones relacionadas