2010-01-06 19 views
10

मैं jQuery का उपयोग करने की कोशिश कर रहा हूं, और अब तक सबकुछ बढ़िया रहा है, जब मैं आंशिक प्रस्तुत करने की कोशिश कर रहा हूं और इसे जोड़ रहा हूं div। यहाँ है यह की स्थापना मैं कैसे हैरेल, jQuery, .js.erb फ़ाइलें, जेएस ब्राउज़र द्वारा निष्पादित नहीं किया गया

मैं ने एक ऐसी कार्रवाई से प्रतिक्रिया करता है करने के लिए js:

def index 
    @objects = Object.find(:all) 

    respond_to do |format| 
    format.js 
    end 
end 

और इसमें कुछ जावास्क्रिप्ट के साथ index.js.erb नामक एक टेम्पलेट:

alert("hello world"); 

Firebug एक "text/javascript" प्रतिक्रिया युक्त रिटर्न:

alert("hello world"); 

लेकिन अलर्ट विंडो प्रकट नहीं होता है, और न ही एक करता है अन्य जावास्क्रिप्ट काम। मैंने http://railscasts.com/episodes/136-jquery की जांच की और साथ ही साथ कम या कम किया गया। मैं कई अन्य बातों की कोशिश की, .erb के बजाय .rjs का उपयोग कर और मेरे टेम्पलेट में इस डाल की तरह:

page.alert("hello world"); 

लेकिन मैं एक ही सटीक परिणाम मिलता है, और ब्राउज़र कभी नहीं जे एस निष्पादित करता है।

कोई भी जानता है कि जावास्क्रिप्ट को क्यों निष्पादित नहीं किया जा रहा है?

मैं रेल 2.3.4 चला रहा हूं।

+1

आप का उपयोग कर कुछ भी jQuery विशिष्ट होना प्रतीत नहीं होते हैं, लेकिन सिर्फ एक नोट के रूप में, प्रोटोटाइप, नहीं jQuery के साथ जहाजों रेल। यदि आप स्विच करना चाहते हैं तो जेआरईएल देखें। –

उत्तर

12

आपको इसे अपने विचार से कॉल करना होगा या इसे कभी भी निष्पादित नहीं किया जाएगा।

एक उदाहरण नियंत्रक:

def index 
    @objects = Object.find(:all) 

    respond_to do |format| 
    format.js{ 
     render :text => "alert('hello')" 
    } 
    end 
end 

और के साथ एक index.html.erb: के लिए

<script type="text/javascript"> 
    $(function(){ 
    $.ajax({ url: '/controller', type: 'get', dataType:'script' }); 
    }); 
</script> 

की जगह वास्तविक यूआरएल है कि नियंत्रक के सूचकांक कार्रवाई निष्पादित करता है के साथ '/ नियंत्रक', डिफ़ॉल्ट रूप से पोस्ट नियंत्रक यह '/ पोस्ट' और इतने पर होगा ...

यदि आप आरजे को पसंद करते हैं तो आप इसे {} और नियंत्रक में कभी-कभी हटाते हैं और index.js.erb या index.rjs बनाते हैं:

page.alert("hello world") 

या:

page << "hello world" 
+0

मैं अपनी स्थिति में, मेरे पास इस क्रिया का एक HTML संस्करण नहीं है, यह अजाक्स (अंतहीन पेजिनेशन) के माध्यम से पृष्ठों को लोड करने के लिए सख्ती से है। किसी कारण से, जब भी मैं रेंडर करता हूं: text => "अलर्ट ('हैलो');" मेरे जवाब में ब्लॉक में, मुझे अभी भी सतर्क नहीं किया गया है, लेकिन फायरबग का कहना है कि मुझे सही सामग्री के साथ एक टेक्स्ट/जावास्क्रिप्ट प्रतिक्रिया मिल रही है। – a10s

+4

ठीक है। बाहर निकलता है मैं डेटा भूल गया टाइप: मेरी एजेक्स कॉल में 'स्क्रिप्ट'। आपकी मदद के लिए धन्यवाद, वह खुद को पकड़ा नहीं होगा। – a10s

+0

डेटा टाइप: jQuery स्क्रिप्ट प्लगइन का उपयोग करते समय 'स्क्रिप्ट' ने मुझे भी बचाया। एक बार जब आप js.erb सही तरीके से सेट हो जाएंगे, तो यह अभी भी इसके बिना जावास्क्रिप्ट के रूप में नहीं चलाएगा। धन्यवाद! – brokenbeatnik

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