ActionView::MissingTemplate مع HAML
-
07-07-2019 - |
سؤال
أقوم بإعداد Ruby on Rails على تثبيت جديد لـ Snow Leopard.بعد القتال (و الضرب) مشاكل MySQL وSphinx، أنا عالق في خطأ غبي يتعلق بـ HAML.
في الأساس، أتلقى خطأً في القالب مفقودًا لكل طريقة عرض تستخدم HAML.يمكنني إضافة ملف xxx.html.erb فارغ ويتم تحميل الصفحة (الفارغة) بشكل جيد.لكن xxx.html.haml يلقي الخطأ، على الرغم من أن هذا الملف موجود بالتأكيد في الدليل المناسب.
هذا هو الخطأ من خادم التطوير:
ActionView::MissingTemplate (Missing template sections/index.erb in view path app/views):
haml (2.2.4) rails/./lib/sass/plugin/rails.rb:19:in `process'
أنا أستخدم جوهرة هامل (2.2.4)، وريلز جوهرة (2.3.4)، وروبي 1.8.7.لقد قمت بتشغيل haml --rails .من الدليل الجذر لتطبيق RoR الخاص بي؛ملف init موجود في دليل البائع/الإضافات/haml.لقد أكدت أن "يتطلب 'haml'" => صحيح عبر IRB.
سيكون موضع تقدير أي مساعدة!
رداً على ياراهر:
تمت محاولة إلغاء التثبيت وإعادة التثبيت، مما أدى إلى عدم ظهور أي أخطاء إلا في rdocs ("تعذر العثور على الصفحة الرئيسية README.rdoc").
في البرنامج النصي/وحدة التحكم:
>> require 'haml'
=> []
تحديث:
يبدو أن تثبيت إصدار قديم من Rails المعروف بالعمل مع HAML في هذا المشروع قد "أصلح" المشكلة.ما زلت أشعر بالفضول لسماع إجابة حقيقية لهذه المشكلة - لا أريد أن أظل عالقًا في الإصدار 2.3.2.
sudo gem install -v 2.3.2 rails
التحديث 2:
يحدث هذا بالتأكيد بسبب الاختلاف بين Rails 2.3.2 و2.3.4.بعد تثبيت كلا الجواهر، يمكنني تعيين ما سيتم استخدامه في ملف بيئة .rb الخاص بي.يعمل HAML بشكل جيد مع 2.3.2 ويتوقف كما هو موضح في 2.3.4.
المحلول
حان الوقت للإجابة المحرجة على هذا السؤال:
هناك فرق بين ريلز 2.3.2 و2.3.4 لا يمكن التعرف عليه xxx.haml.html
الملفات كملفات يجب تحليلها بواسطة HAML (أو ERB)؛هذا يعمل بشكل جيد في 2.3.2.يجب دائمًا تسمية ملفات HAML xxx.html.haml
على أية حال، هذا ليس حتى خطأ.
لم أكن أدرك أن هذه هي المشكلة لأنه تم تشغيل خيار "إخفاء امتدادات الملفات" (افتراضيًا) في تثبيت Snow Leopard الجديد.لذلك عندما حاولت تبديل امتداد الملف من خلال Finder إلى html.haml
لاختبار هذا، فإنه في الواقع تغييره إلى haml.html.haml
أو بعض الهراء.
المغزى من القصة:قمت بتشغيل البرنامج النصي التالي والآن يعمل HAML مع Rails 2.3.4.
path = '/path_to_rails_app/views/'
dir = Dir.new(path)
dir.each do |d|
if File.directory?(path+d)
Dir.new(path+d).each do |f|
if (f =~ /.*\.haml\.html$/) != nil
File.rename(path+d+'/'+f, path+d+'/'+f.gsub('haml.html', 'html.haml'))
end
end
end
end
نصائح أخرى
حاول إعادة تسمية القالب الخاص بك إلى
sections/_index.haml
أو
sections/__index.haml