سؤال

أقوم بإعداد 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
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top