ActionView::Отсутствующий шаблон с 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'
Я использую драгоценный камень haml (2.2.4), драгоценный камень rails (2.3.4) и ruby 1.8.7.Я действительно запускал haml -rails .из корневого каталога моего приложения RoR;файл init находится в каталоге vendor/plugins/haml.Я подтвердил, что "требуется 'haml'" => true через IRB.
Мы будем признательны за любую помощь!
В ответ на Yaraher:
Попробовал отменить и переустановить, что не вызвало никаких ошибок, за исключением 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.С установленными обоими драгоценными камнями я могу установить, какой из них используется в моем файле environment.rb.HAML отлично работает с 2.3.2 и прерывается, как описано в 2.3.4.
Решение
Пришло время для неловкого ответа на этот вопрос:
Существует разница между Rails 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