2011-12-06 15 views
11

अधिकांश रेल 3.1 परिसंपत्ति पाइपलाइन और जावास्क्रिप्ट टेम्पलेटिंग के संबंध में ट्यूटोरियल मुझे विश्वास दिलाता है कि संपत्ति पाइपलाइन किसी भी * .jst फ़ाइलों को उठाएगी और उन्हें जेएसटी वैरिएबल में थप्पड़ मार देगा जो आपके * .js पर उपलब्ध है। फ़ाइलें। हालांकि, मैं वर्तमान में निम्न त्रुटि के साथ स्टम्प्ड रहा हूँ जब मैं एक * .jst टेम्पलेट लोड करने का प्रयास:जेएसटी रेल के लिए अपरिभाषित 3.1 आवेदन

Uncaught ReferenceError: JST is not defined

किसी भी संकेत दिए गए?

//= require templates/your_template.jst

फिर अपने इसी में जावास्क्रिप्ट टेम्पलेट में शामिल हैं:

उत्तर

7

JST चर सेट करने के लिए अगर आप सही तरीके से अपने app/assets/application.js फ़ाइल में जावास्क्रिप्ट टेम्पलेट वस्तुओं में शामिल हैं तो वे संपत्ति पाइप लाइन के माध्यम से शामिल किया जा सकता लगता है

- content_for :javascripts do 
    = javascript_include_tag "templates/your_template" 
+2

क्यों आप अपने मेनिफ़ेस्ट में टेम्पलेट्स/your_template.jst की आवश्यकता होगी, लेकिन फिर एक ही फाइल पर javascript_include_tag का उपयोग करें? जब आप application.js प्रकट में your_template.jst की आवश्यकता होती है, तो आप बस 'javascript_include_tag 'application'' जो डिफ़ॉल्ट रूप से किया जाता है की जरूरत है। – tybro0103

2

लगता है कि आपने EJS रत्न है, जो अगर आप रेल-रीढ़ रत्न का उपयोग शामिल है की जरूरत है: दृश्य (haml का प्रयोग करके) रेल।

तो फिर तुम सिर्फ एप्लिकेशन/संपत्ति/javascripts/foobar.jst.ejs की तरह एक फ़ाइल बनाएं और उसे बुला

JST['foobar']()

आशा है कि आपके सवाल का जवाब द्वारा प्रदान की जा सकती है।

+0

धन्यवाद। आपका जवाब वही है जो मैं ढूंढ रहा था। BTW, अगर किसी को भी पथ साथ परेशानी हो रही है, तो आप कंसोल में JST वस्तु निरीक्षण कर सकते हैं, और यह ज्ञात टेम्पलेट्स के सभी सूची जाएगा। – Alric

23

यदि आप एक लाइन की आवश्यकता होती है

// = require_tree ../templates तरह

सुनिश्चित करें कि लाइन लाइन भी शामिल ऊपर है प्रयोग कर रहे हैं जो कुछ भी फ़ाइल आप दे रहा है त्रुटि।

7

सभी अन्य उत्तर इस पर हो रही है, लेकिन स्पष्ट करने के लिए ...

JST sprockets से परिभाषित नहीं है जब तक कि एक या अधिक .jst फ़ाइलें प्रकट में आवश्यक किया गया है।

तो यदि आपके मेनिफेस्ट में //= require_tree ../templates है, तो भी जेएसटी तब तक अपरिभाषित होगा जब तक आप टेम्पलेट निर्देशिका में कम से कम एक .jst फ़ाइल नहीं बनाते।

इसके अलावा EJS मणि शामिल करना न भूलें। यदि आपने रीढ़ की हड्डी पर रेल शामिल किया है, तो आपके पास पहले से ही है।

+0

यह वास्तव में समस्या थी। आपको टेम्पलेट्स/dummy.jst.ejs जैसी कुछ फ़ाइल की आवश्यकता है – Ziggy

0

यह लगता है JST रीढ़ या अंडरस्कोर के साथ कोई संबंध नहीं है कि, यह पीछे के अंत से किया है और JST वस्तु और अपने सामने के अंत पन्नों में JST समारोह परिणाम देगा।

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