我正在使用全新安装的Snow Leopard安装Ruby on Rails。战斗后(和击败)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 gem(2.2.4),rails gem(2.3.4)和ruby 1.8.7。我确实运行过haml --rails。从我的RoR应用程序根目录; init文件位于vendor / plugins / haml目录中。我已经确认“要求'haml'” =>通过IRB确认。

任何帮助将不胜感激!

回应Yaraher:

尝试取消重新安装,除了使用rdocs(“找不到主页面README.rdoc”)之外没有引起任何错误。

在脚本/控制台中:

>> require 'haml'
=> []

<强>更新

在此项目中安装已知可与HAML一起使用的旧版Rails似乎已经“修复”了问题。我仍然很想知道这个问题的真正答案 - 我不想被卡在2.3.2。

sudo gem install -v 2.3.2 rails

更新2:

这绝对是由Rails 2.3.2和2.3.4之间的差异引起的。安装了两个gem后,我可以设置在environment.rb文件中使用的gem。 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 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

其他提示

尝试将模板重命名为

sections/_index.haml

sections/__index.haml
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top