我正在全新安装的 Snow Leopard 上设置 Ruby on Rails。战斗后(和beating http://sl.maxmasnick.com/post/187931754/getting-rails-sphinx-mysql-working-on-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 gem (2.2.4)、rails gem (2.3.4) 和 ruby 1.8.7。我确实运行了 haml --rails 。从我的 RoR 应用程序根目录;初始化文件位于vendor/plugins/haml目录中。我已通过 IRB 确认“require 'haml'” => true。
任何帮助,将不胜感激!
回复 亚拉赫:
尝试卸载并重新安装,除了 rdocs 之外,没有引发任何错误(“找不到主页 README.rdoc”)。
在脚本/控制台中:
>> require 'haml'
=> []
Update:
在此项目中安装已知可与 HAML 配合使用的旧版本 Rails 似乎已经“解决”了该问题。我仍然很想听到这个问题的真正答案——我不想停留在 2.3.2 上。
sudo gem install -v 2.3.2 rails
更新2:
这肯定是由 Rails 2.3.2 和 2.3.4 之间的差异引起的。安装了这两个 gem 后,我可以设置在我的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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)