में रूबी कोडिंग में रूबी कोडिंग का उपयोग करते समय @ variables वापस नहीं कर सकता है। मैं स्थानीय विकास वातावरण पर s3_direct_upload का उपयोग करने के लिए https://devcenter.heroku.com/articles/direct-to-s3-image-uploads-in-rails#jquery-file-upload-callbacks ट्यूटोरियल का पालन कर रहा हूं। कुछ जावास्क्रिप्ट हैं जो प्रत्येक फ़ाइल फ़ील्ड के लिए फ़ाइलअपलोड फ़ंक्शन सेट करते हैं। अगर मैं बस फॉर्म के ठीक नीचे कोड शामिल करता हूं तो यह सब अच्छा काम करता है, लेकिन अगर मैं कोड को js.erb फ़ाइल में app/assets/javascripts/
के तहत डालता हूं तो यह काम नहीं करता है। त्रुटि है:एसेट पाइपलाइन रेलवे
ActionView::Template::Error (undefined method `url' for nil:NilClass
(in /s3_direct_upload_gem_test/app/assets/javascripts/s3_direct_upload.js.erb)):
18:
19: <%= @s3_direct_post.url %>
20:
21: <%= javascript_include_tag :s3_direct_upload %>
app/assets/javascripts/s3_direct_upload.js.erb:14:in `block in singleton class'
जैसा कि आप देख सकते हैं, line 19
ऊपर कोड से बाहर @ s3_direct_post.url मुद्रित करने के लिए प्रयोग किया जाता है। जब मैं फ़ाइल में सभी जावास्क्रिप्ट शामिल करता हूं तो यह सही ढंग से मुद्रित किया गया था।
fileInput.fileupload({
fileInput: fileInput,
url: '<%= @s3_direct_post.url %>',
type: 'POST',
autoUpload: true,
formData: <%= @s3_direct_post.fields.to_json.html_safe %>,
ऐसा नहीं है कि किसी कारण, assets
फ़ोल्डर के अंतर्गत जावास्क्रिप्ट फ़ाइल (परिसंपत्ति पाइप लाइन में) के लिए की तरह लगता है अलग से और इतने संकलित किया गया है @s3_direct_post
: यदि मैं s3_direct_upload.js.erb
में लाइन 14 का पता लगाने के लिए, यह url
रेखा है , जो Controller
में सेट है, यहां सेट नहीं है।
बेशक मैं हमेशा उन्हें दर्शक फ़ाइल पर <script>
में डाल सकता हूं लेकिन यह काफी सुरुचिपूर्ण नहीं है। पृष्ठ-विशिष्ट जेएस कोडिंग को अलग करने और ऊपर की समस्या को हल करने का कोई तरीका है?
क्या आप अनदेखा करने से पहले '<% p self.class%>' पंक्ति डाल सकते हैं? –