2010-10-21 13 views
6

मैं एक रेल app में अंतर्राष्ट्रीयकरण के लिए स्थान फ़ाइलें बनाने रहा हूँ, और एक यूआरएल है कि मैं अनुवाद करना चाहते हैं टैग के साथ शामिल है। ERBi18n, < and > उदाहरण</p> <p>एचटीएमएल के लिए > ; < ; द्वारा प्रतिस्थापित हो जाता है जब इरादा नहीं

<% = टी (foo.bar.xxxx)%>

YML फ़ाइल

foo: बार: xxxx: "xxxx"

परिणाम

& lt; a href = "/info/index.html" & gt; xxxx </एक & gt;

जो मेरे लिंक को तोड़ता है। मेरे पास रूबी भाग पर एच नहीं है, तो क्या यह काम नहीं करना चाहिए? या क्या मुझे yml फ़ाइल में HTML टैग नहीं होना चाहिए?

रेल 3.0.1 संस्करण रूबी संस्करण 1.8.7 p249

उत्तर

28

आपका HTML YAML कुंजी एक _html प्रत्यय की आवश्यकता है।

पूर्ण कुंजी नाम के साथ यह संदर्भित करने के लिए और साथ ही जरूरत है, रेल स्वचालित रूप से जब आप xxxx फोन _html प्रत्यय न दिखाई दें।

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

यह खूबसूरती से काम करता है, उपसर्ग भी पहचान के लिए बहुत आसान है, धन्यवाद। – Saifis

+0

धन्यवाद, यह बहुत अच्छा काम करता है – aashish

+0

अभी भी काम करता है! धन्यवाद – shicholas

2

रेल वास्तविक मार्कअप के रूप में प्रदर्शित होने से मॉडल डेटा रोकने के द्वारा इंजेक्शन हमले से रोक रहा है है। कच्चा कार्य उस रूपांतरण को रोकता है।

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

काम करता है? html_safe है

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

स्ट्रिंग का प्रतीक होगा इस रेल करना और यह &gt; और &lt; में कनवर्ट करने की बजाय HTML बाहर प्रस्तुत करना होगा:

+0

यह सिर्फ साथ ही साथ काम करता है, कच्चे विधि से अवगत नहीं था। यह कुछ समय के लिए आसान हो सकता है, जानकारी के लिए धन्यवाद। – Saifis

संबंधित मुद्दे