2010-10-21 14 views
6

tworzę plików lokalizacyjnych dla internacjonalizacji w app szyn i mieć url że chcę przetłumaczone z znaczniki zawarte na przykładi18n na Ruby on Rails, < and > zostaje zastąpiony przez > ; < ; gdy nieprzeznaczone

html. erb

<% = t (foo.bar.xxxx)%>

plik yml

foo bar: XXXX "XXX"

wynik

& lt; = "/info/index.html" & GT; XXXX </a & gt;

który łamie moje linki. Nie mam h na rubinowej części, więc czy nie powinna to być praca? A może po prostu nie mam tagów html w pliku yml?

wersja

Rails 3.0.1 jest wersja Ruby 1.8.7 p249

Odpowiedz

28

Klucze HTML YAML trzeba mieć _html przyrostek:

foo: 
    bar: 
    xxxx_html: "<strong>Some HTML Here</strong>" 

ten sposób Rails poznaczy ciąg ma html_safe i uczyni z HTML zamiast przekształcenie go do &gt; i &lt;.

Należy również podać odniesienie do pełnej nazwy klucza, Railsy nie widzą automatycznie sufiksu _html podczas wywoływania xxxx.

<%= t 'foo.bar.xxxx_html' %> 
+0

to działało pięknie, prefiks jest bardzo przydatny również do identyfikacji, dzięki. – Saifis

+0

dzięki, działa świetnie – aashish

+0

nadal działa! dzięki – shicholas

2

Rails jest zapobieganie atakom wtrysku poprzez zapobieganie danych modelu, które są wyświetlane jako rzeczywiste znaczników. Funkcja raw zapobiega tej konwersji.

Czy

<%= raw t(foo.bar.xxxx) %> 

pracę?

+0

To działało tak samo dobrze jak w drugim, nie był świadomy sposobu surowym. Przydałoby się to trochę czasu, dzięki za informację. – Saifis

Powiązane problemy