ActionView :: MissingTemplate с HAML - PullRequest
       354

ActionView :: MissingTemplate с HAML

2 голосов
/ 15 сентября 2009

Я устанавливаю 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. Я запускал хамл рельсы. из моего корневого каталога приложения RoR; файл инициализации находится в каталоге vendor / plugins / haml. Я подтвердил, что "require '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.

Ответы [ 2 ]

1 голос
/ 16 сентября 2009

Время для неловкого ответа на этот вопрос:

Существует разница между Rails 2.3.2 и 2.3.4, которая не распознает файлы xxx.haml.html как файлы, которые должны быть проанализированы HAML (или ERB); это работало нормально в 2.3.2. HAML-файлы всегда должны называться xxx.html.haml anwyay, так что это даже не ошибка.

Я не осознавал, что это была проблема, потому что у меня была включена опция «скрывать расширения файлов» (по умолчанию) в моей новой установке 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
0 голосов
/ 15 сентября 2009

Попробуйте переименовать ваш шаблон в

sections/_index.haml

или

sections/__index.haml
...