2011-02-24 20 views
6

मैं एक आरओआर आवेदन चला रहा हूं (रेल 2.3.8, रूबी 1.8.7), एप्लिकेशन मेरी स्थानीय मशीन पर ठीक चलाता है। लेकिन उत्पादन पर लॉग निम्न त्रुटि दिखाने:एक्शन व्यू :: टेम्पलेट एरर (लापता टेम्पलेट) रेल पर रूबी

ActionView::TemplateError (Missing template folder/_file_name.erb in view path app/views) on line #19 of app/views/layouts/main.rhtml: 
19:  <%= render :partial => "folder/file_name" -%> 

फ़ाइल नाम folder/_file_name.html.erb रूप में मौजूद है, मैं उत्पादन वातावरण पर समस्या पुन: पेश करने की कोशिश की लेकिन did not किसी भी भाग्य है, के लिए किसी कारण रेल आवेदन कुछ पर folder/_file_name.erb के लिए पूछता है कई बार यह दूसरी बार सही फ़ाइल folder/_file_name.html.erb की खोज करता है।

कोई मुझे बता सकता है कि क्या हो रहा है?

एक ही भी .rhtml फ़ाइलों के लिए होता है, रेल आवेदन अनुरोध समय पर .erb जबकि दूसरों को सही फ़ाइल .rhtml मिल

अद्यतन:

<%= render :partial => "shared/meta_tags" -%> 
<%= render :partial => "shared/common_resources" -%> 
<%= render :partial => 'shared/ads/oas' -%> 

इस मुद्दे पर किसी भी संकेत दिए गए होगा सहायक हो, अग्रिम धन्यवाद

+0

कृपया कोड दिखाएं जहां आप अपने आंशिक संदर्भित करते हैं। लगता है जैसे वहाँ एक समस्या है। – Dty

उत्तर

4

पहले टेम्पलेट के लिए अनुरोध का प्रारूप क्या है ?, folder/_file_name.html.erb) यह केवल सही होगा अगर अनुरोध प्रारूप एचटीएमएल है, लेकिन अगर यह आपके ऐप में AJAX या कोई अन्य कस्टम प्रकार नहीं है। यदि आप सभी प्रारूपों के लिए समान आंशिक उपयोग करना चाहते हैं तो folder/_file_name.erb पर एक त्वरित समाधान का नाम बदलना होगा

+0

सभी फ़ाइलों को http अनुरोध के माध्यम से अनुरोध नहीं किया गया है xhr, मेरे पास नाम बदलने के लिए 100 से अधिक फ़ाइलें हैं। इससे कुछ अन्य समस्याएं भी पैदा होंगी, इसलिए यदि कोई अन्य रास्ता नहीं है तो मुझे कार्यालय में कुछ समय के लिए बर्बाद कर दिया जाएगा। – wael34218

+0

हां सच है ... लॉग इन में सुनिश्चित करें कि जब त्रुटियां होती हैं तो अनुरोध पहली पंक्ति 'AS HTML' में होता है।इसके अलावा आंशिक प्रस्तुत करने वाले कोड को किसी भी अन्य संभावनाओं को त्यागने में सहायक होगा –

+0

शायद एक त्रुटि अनुरोध पर एक त्रुटि होती है जो कुछ आंशिक प्रदान करने वाले त्रुटि पृष्ठ को प्रस्तुत करने का प्रयास करेगी। – wael34218

5

क्या उस फ़ाइल के समान नाम के साथ कोई नियंत्रक कार्रवाई है?

यदि आपके पास बार क्रिया के साथ एक foo नियंत्रक है और आपकी कार्रवाई में कोई प्रतिक्रिया परिभाषित नहीं है, तो रेल दृश्य/foo/bar.html.erb को प्रस्तुत और प्रस्तुत करेंगे।

अगर ऐसा नहीं तुम क्या चाहते हो, तो आप अपने नियंत्रक में एक प्रतिक्रिया इतनी तरह, उचित आंशिक रेंडर करने के लिए परिभाषित करने और यह बताने के लिए रेल की जरूरत है: उत्तरार्द्ध मामले में

respond_to do |format| 
    format.html do 
     render :partial => "/foo/bar" 
    end 
end 

, रेल प्रस्तुत करना होगा "विचारों/foo/_bar.html.erb "

3

के रूप में वहाँ लापता कैश, अज्ञात अनुरोध प्रारूप और आदि की तरह लोड कारण हैं कुछ मामलों में आपको यह त्रुटि नहीं रोका जा सकता

आप पूर्वनिर्धारित स्वरूपों की संख्या को सीमित करने के लिए कोशिश कर सकते हैं जैसे:

get '/about-us' => 'controller#about', :format => /(?:|html|json)/ 

हालांकि, मैं अपने application_controller.rb फ़ाइल में निम्न विधि जोड़ा ताकि ऐसी त्रुटियों स्क्रीन पर एक त्रुटि संदेश के साथ असफल रहने के बजाय एक 404 पृष्ठ प्रदर्शित करेगा

rescue_from ActionView::MissingTemplate, :with => :rescue_not_found 
protected 
def rescue_not_found 
    Rails.logger.warn "Redirect to 404, Error: ActionView::MissingTemplate" 
    redirect_to '/404' #or your 404 page 
end 

आप एक में इस कोड को लपेट कर सकते हैं अगर कथन, इस if Rails.env.production? की तरह कुछ दिया गया है कि env सेटअप है इसलिए आपका देव पर्यावरण प्रभावित नहीं होगा

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