ActionView :: MissingTemplate con HAML
-
07-07-2019 - |
Pregunta
Estoy configurando Ruby on Rails en una nueva instalación de Snow Leopard. Después de luchar (y paliza ) Problemas de MySQL y Sphinx, estoy atrapado en un estúpido error relacionado con HAML.
Esencialmente recibo un error de plantilla faltante para cada vista que usa HAML. Puedo agregar un archivo en blanco xxx.html.erb y una página (en blanco) se carga bien. Pero xxx.html.haml arroja el error, aunque ese archivo definitivamente existe en el directorio apropiado.
Aquí está el error del servidor de desarrollo:
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'
Estoy usando la gema haml (2.2.4), la gema de rieles (2.3.4) y el rubí 1.8.7. Ejecuté haml --rails. desde el directorio raíz de mi aplicación RoR; el archivo init está en el directorio vendor / plugins / haml. He confirmado que " requieren 'haml' " = > cierto a través de IRB.
¡Cualquier ayuda sería apreciada!
En respuesta a Yaraher:
Intenté desinstalar y volver a instalar, lo que no generó errores excepto con los rdocs (" No se pudo encontrar la página principal README.rdoc ").
En script / consola:
>> require 'haml'
=> []
Update:
La instalación de una versión anterior de Rails que funciona con HAML en este proyecto parece haber "arreglado" el problema. Todavía tendría curiosidad por escuchar una respuesta real a este problema: no quiero quedar atrapado en 2.3.2.
sudo gem install -v 2.3.2 rails
Actualización 2:
Esto definitivamente es causado por una diferencia entre Rails 2.3.2 y 2.3.4. Con ambas gemas instaladas, puedo establecer cuál se usa en mi archivo environment.rb. HAML funciona bien con 2.3.2 y se rompe como se describe en 2.3.4.
Solución
Tiempo para la vergonzosa respuesta a esta pregunta:
Hay una diferencia entre Rails 2.3.2 y 2.3.4 que no reconoce los archivos xxx.haml.html
como archivos que deberían ser analizados por HAML (o ERB); esto funcionó bien en 2.3.2. Los archivos HAML siempre deben llamarse xxx.html.haml
anwyay, por lo que esto ni siquiera es un error.
No me di cuenta de que este era el problema porque tenía las "ocultar extensiones de archivo" opción activada (activada de manera predeterminada) en mi nueva instalación de Snow Leopard. Entonces, cuando intenté cambiar la extensión del archivo a través de Finder a html.haml
para probar esto, en realidad lo cambió a haml.html.haml
o alguna tontería.
Moraleja de la historia: ejecuté el siguiente script y ahora HAML funciona con 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
Otros consejos
Intenta cambiar el nombre de tu plantilla a
sections/_index.haml
o
sections/__index.haml