2012-04-10 10 views
9

मैं हेरोकू में एक रेल 3.2 ऐप तैनात कर रहा हूं। मैं https://devcenter.heroku.com/articles/rails3x-asset-pipeline-cedar के अनुसार स्थानीय रूप से संपत्तियों का प्रीकंपलिंग कर रहा हूं।हेरोकू वापस 'devise/session.js वापस क्यों नहीं है'?

लेकिन मैं

ActionView::Template::Error (devise/sessions.js isn't precompiled): 

हो रही है किसी और इस का सामना करना पड़ा है?

डेविस जावास्क्रिप्ट को पूर्ववत करने के लिए सही तरीका क्या है।

धन्यवाद!

+0

आप देवदार ढेर पर हैं? – sethvargo

+0

हाय सेठवर्गो। हाँ मैं सीडर –

उत्तर

6

सभी सुझावों के लिए धन्यवाद। थोड़ी सोच के बाद, मुझे एहसास हुआ कि यह समस्या नीचे थी कि ऐप को नियंत्रक-विशिष्ट जावास्क्रिप्ट को कॉल करने के लिए कॉन्फ़िगर किया गया था। यदि कोई और इस मुद्दे पर चलता है, तो मैंने यहां क्या किया है।

मैं लेआउट फ़ाइल में निम्न टैग के माध्यम से नियंत्रक-विशिष्ट .js लोड कर रहा था।

<%= javascript_include_tag "application", params[:controller] %> 

समस्या यह है कि यह विफल रहता है अगर कोई विशेष cotroller.js फ़ाइल मौजूद नहीं है। मेरे मामले में, लॉगिन पृष्ठ विफल रहा क्योंकि मैंने एक devise/session.js फ़ाइल नहीं बनाई थी।

मैं यह फ़ाइल बना सकता था, लेकिन मुझे लगा कि यह एक गन्दा दृष्टिकोण था। मुझे बहुत सारी खाली फाइलें झूठ बोलने का विचार पसंद नहीं है।

इसके बजाय मैं स्पष्ट रूप से देखने

<% javascript 'controller.js' %>  

से नियंत्रक विशेष javascripts बोल रहा हूँ application_helpers में निम्नलिखित सहायक का उपयोग करना

def javascript(*files) 
    content_for(:head) { javascript_include_tag(*files) } 
end 

अब तक ठीक काम कर रहा हो रहा है।

सुझावों के लिए फिर से धन्यवाद।

+3

जेएस फ़ाइल जोड़ने का दृष्टिकोण लेने में रुचि रखने वालों के लिए, आप 'ऐप/संपत्ति/जावास्क्रिप्ट 'में' devise' फ़ोल्डर बना सकते हैं, फिर वहां 'session.js' फ़ाइल डालें। यदि आप साइन इन पेज को फैंसी करना चाहते हैं तो हंडी। एनबी: आपको अलग-अलग संपत्तियों को अलग-अलग एक्सेस करने की आवश्यकता है: http://stackoverflow.com/questions/7425929/rails-3-1-strategy-for-pre-compiling-controller-specific-js-assets – brookr

+0

बहुत बहुत धन्यवाद, यह वह जवाब है जिसे मैं घंटों तक ढूंढ रहा हूं! –

3

rake assets:precompile चलाने का प्रयास करें।


अपने config/वातावरण/production.rb को यह जोड़ने का प्रयास करें:

config.assets.precompile += %w(*.css *.js) 

या अपनी फ़ाइल निर्दिष्ट करें।

+0

पर हूं हाय जस्टिन डी। मैं आपके उत्तर की सराहना करता हूं, बहुत बहुत धन्यवाद। यह काम करना चाहिए था (अगर मैंने जरूरी .js फ़ाइल बनाई होगी, तो काम किया होगा), लेकिन रातोंरात इस मुद्दे के बारे में सोचने के बाद, मुझे एहसास हुआ कि समस्या यह थी कि मैं नियंत्रक विशिष्ट जावास्क्रिप्ट को कैसे कॉल कर रहा था। मैंने दूसरों की मदद करने के लिए एक उत्तर जोड़ा है जो एक समान समस्या का सामना कर सकता है। –

5

मेरे समाधान:

<%= javascript_include_tag "application", controller_name if controller_name != "sessions" %> 
संबंधित मुद्दे