2010-12-07 14 views
10

Ich benutze die automatische Form Label Helfer zum Erstellen meiner Formular-Etiketten und über die i18n Unterstützung übersetzt werden, möchte ich jedoch HTML in das Etikett und ich kann nicht finde heraus, wie man HTML sicher macht.Rails 3: Verwendung von HTML in i18n Form Helper Übersetzungen

Zum Beispiel:

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

endet als:

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

Aber ich will es sein:

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

Gibt es eine Möglichkeit für mich, um die Übersetzung zu geben als html_safe, damit es vor der Ausgabe nicht codiert wird?

Dies scheint auch die semantischste Art und Weise für die HTML zu sein, aber ich bin offen für Vorschläge, wenn ich mich dem völlig falsch annähere.

Thanks :)

Aktualisiert:

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

Antwort

12

Sie wissen nicht, wie Sie Ihren tatsächlichen Helfer ist, aber man konnte html_safe verwenden, die leicht zu tun (vorausgesetzt, dass Wert Ihrer Etikett nicht eingegeben wird von anderen Benutzern).

so etwas wie: t("helpers.label.product.name").html_safe

Wenn dies nicht funktioniert, geben Sie bitte Ihre Umsetzung Ihrer Hilfsmethode, oder nur die Leitungen für das Ergebnis ausgibt.

====== ====== AKTUALISIERT

Dank der Code aktualisiert, jetzt weiß ich, was die beste Antwort ist: D

Ich weiß nicht, auch wenn Sie wirklich wollen helpers.label.product.name.

Aber es ist eine andere Art, wie ich denke, würde besser sein, die definieren, wie er folgende ist:

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

Wenn Sie wollen nicht Ihre eigenen Formular-Builder zu bauen, verwenden Sie diese:

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

Eigentlich, wenn Sie Ihren eigenen Formular-Builder definieren, es einfach neu definieren die Label-Methode, um seinen Text automatisch zu generieren.

+0

Ich bin mit den Standard-Rails Helfer: http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i -label –

+0

Also verwendest du ein Modell? Könnten Sie Ihren Code hier einfügen? – PeterWong

+0

Ich habe die Verwendung der ursprünglichen Frage hinzugefügt. Ich verwende nur den Standard-Rails-Formularhelfer für ein Modell. –

14

Die Möglichkeit, einen normalen Schlüssel automatisch HTML-sicher in Rails3 zu machen, besteht darin, _html oder .html an den Schlüsselnamen anzuhängen. Z.B. Name_html. Dies funktioniert nur über die translate/t-Methode in der Ansicht, d. H. Nicht über I18n.t. Dies wird jedoch hier nicht funktionieren, da der Standardformular-Helfer diese Version des Schlüssels nicht versucht.

Erstellen Sie Ihren eigenen Formular-Generator ist der Weg zu gehen, wie vorgeschlagen. Sie könnten auch tun

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

Wenn dies nur an ein paar Orten passiert.

-8

Die andere Option ist, Folgendes zu tun:

name: '<span>Your Product Name <small>Try to be creative</small></span>' 
Verwandte Themen