2010-11-23 11 views
5

की अनुमति के बिना textareas में न्यूलाइन अक्षरों को पार्स करना मेरे पास एक टेक्स्टरेरा फ़ील्ड है जहां उपयोगकर्ता सामग्री दर्ज कर सकते हैं। जब किसी पृष्ठ पर अपनी प्रविष्टि प्रदर्शित करने की बात आती है, तो रेल लाइन प्रत्येक पृष्ठ ब्रेक के लिए \n लौटाती है, जो पेज पर एचटीएमएल के लिए बिल्कुल ब्रेक नहीं होती है।सभी एचटीएमएल टैग

मैं क्या इकट्ठा से, इस के आसपास होने का मानक तरीका एक .gsub आदेश है, <br /> साथ \n की जगह है, और फिर छोर पर एक .html_safe सुनिश्चित करने के लिए <br /> बना देता है।

समस्या यह है कि, मैं सामग्री को html_safe नहीं करना चाहता - एचटीएमएल अभी भी बदला जाना चाहिए, लेकिन <br /> टैग को (गैर-भागने वाली) सामग्री में इंजेक्शन दिया जाना चाहिए।

सुझावों की सराहना की।

उत्तर

16

simple_format विधि लाइन ब्रेक स्वरूपण के लिए अच्छा है। यह <p> टैग में टेक्स्ट ब्लॉक को लपेटता है, और लाइनलाइन ब्रेक (<br>) में न्यूलाइन अक्षरों को परिवर्तित करता है (डबल न्यूलाइन एक दूसरे पैराग्राफ में निम्न पाठ को तोड़ देता है)।

हालांकि यह अन्य HTML वर्णों से बच नहीं है, और इसके बजाय बस उन्हें अनुमति देता है। simple_format के संयोजन के बाद आप sanitize के साथ अच्छी तरह से काम करना चाहिए। इस उपयोग करके देखें:

<%=raw sanitize(simple_format(@article.body), :tags => %w(br p)) %>

+0

बिल्कुल सही - बहुत धन्यवाद। ;-) – PlankTon

+4

या और भी बेहतर अभी तक, उपयोगकर्ता builtin 'घंटा()' विधि: '<% = simple_format ज @ article.body%>' –

+0

आप एक मॉडल या नियंत्रक में ऐसा करना चाहते हैं: 'ActionController :: Base.helpers.raw ActionController :: Base.helpers.sanitize ((ActionController :: Base.helpers.simple_format (शरीर)),: टैग =>% w (br पी)) ' – richardaday

2

कि आप क्या करना चाहते हैं पर निर्भर करता है, तो आप के रूप में यह है \n स्टोर कर सकते हैं, और फिर, जब स्क्रीन पर सामग्री प्रदर्शित करने, (h @comment.content).gsub("\n", '<br>') का उपयोग करें, जो पहले सभी HTML टैग से बचने के लिए है, और फिर साथ \n की जगह <br>

6

आप पाठ क्षेत्र दिखाई में दर्ज किए गए HTML टैग चाहते हैं, लेकिन अभी भी लाइन को दिखाने के लिए टूट जाता है चाहते हैं, इस प्रयास करें:

<%= simple_format(h @article.body) %> 

"h" सभी उद्धरण एचटीएमएल विशेष वर्ण और "सरल_फॉर्मैट" फिर लाइन ब्रेक को <br> में परिवर्तित करता है।

-1

यह सब &lt;pre&gt; टैग का उपयोग करके टाला जा सकता है। यह टैबबिंग को संरक्षित करने का भी लाभ है। उदाहरण के लिए

&lt;pre&gt;&lt;%= @article.body %&gt;&lt;/pre&gt; 
संबंधित मुद्दे