मैं सिर्फ इस मुद्दे के साथ अपने आप को सामना करना पड़ा। के रूप में ज्योफ & एंडी द्वारा उल्लेख आप, 2 विकल्प हैं:
- उपयोग जावास्क्रिप्ट उसे अपने पृष्ठ
- उपयोग एक एक अजाक्स कॉल में रहना सर्वर से पार्स कपड़ा पाने के लिए कपड़ा और jQuery पार्स करने के लिए और पेज
मैं jquery के साथ स्क्रिप्टैक्टुलस को प्रतिस्थापित करने के लिए http://github.com/aaronchi/jrails का उपयोग कर रहा हूं, जो चीजों को थोड़ा आसान बनाता है।
यहाँ मैं क्या किया है:
मैं विकल्प 2 को लागू करने की वजह से स्वरूपण बिल्कुल के रूप में यह RedCloth के माध्यम से दिखाई देगा हो रही अपने आवेदन के लिए सर्वोपरि है फैसला किया।
मैं अपने पृष्ठ की <head>
में निम्नलिखित कहा:
<script>
var timeStamp1 = -1;
var timeStampSent1 = -1;
function delay() {
setTimeout('preview()',1000);
}
function preview() {
var n = new Date().getTime();
// Ask for update if textarea was changed since this function last ran
if (timeStamp1 != -1 && timeStamp1 != timeStampSent1) {
$.post('/whatevers/ajax_update_preview', $('#textile').serialize(), null, "script");
timeStampSent1 = timeStamp1;
}
delay(); // Run this again in 1000ms
}
// Important for letting you send ajax requests with jquery & rails
jQuery.ajaxSetup({
'beforeSend': function (xhr) {xhr.setRequestHeader("Accept", "text/javascript")}
});
$(document).ready(function(){
// Event binding to watch for changes to the textarea
$('#textile').keydown(function() {
timeStamp1 = event.timeStamp
});
});
</script>
में <body>
आपको स्पष्ट रूप से की आवश्यकता होगी:
<textarea id="textile" name="some_text"></textarea>
<div id="preview"></div>
आप अपने नियंत्रक में निम्नलिखित की जरूरत है:
class WhateversController < ApplicationController
def ajax_update_preview
txt = params[:some_text]
render :update do |page|
page.replace_html 'preview', :partial => 'preview', :object => txt
end
end
और आंशिक (_preview.html.haml; यह HAML में है कि मैं क्या उपयोग है, लेकिन आप भी ERB में यह कर सकता है, और आप environment.rb में RedCloth मणि) gem.config करने की आवश्यकता होगी क्योंकि:
- if live_textile_preview
= RedCloth.new(live_textile_preview).to_html
अंत में, अपने routes.rb में इस डाल करने के लिए याद :
map.resources :whatevers, :collection => {:ajax_update_preview => :post}
मैं जावास्क्रिप्ट के साथ बहुत अनुभवहीन हूं (मैं सिर्फ एक तरह से चीजों को एक साथ हैक), इसलिए मुझे यकीन है कि जे एस यहाँ सुधार किया जा सकता हूँ।
ध्यान रखें कि सर्वर संसाधनों पर यह एक प्रमुख हिट है यदि आपके पास बहुत से उपयोगकर्ता हैं। यदि ऐसा है तो आप जावास्क्रिप्ट के साथ क्लाइंट पक्ष पर कपड़ा को संसाधित करने से बेहतर होगा।
यदि आपके पास किसी पृष्ठ के भीतर बहुत सारे टेक्स्टरेयर हैं तो यह निश्चित रूप से काम नहीं करेगा। – kgpdeveloper
यदि कोई दिलचस्पी लेता है, तो मैंने एक मणि बनाया है https://github.com/bridgeutopia/textile_editor_helper – kgpdeveloper