HAMLを使用したActionView :: MissingTemplate
-
07-07-2019 - |
質問
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経由でtrue。
ご協力いただければ幸いです!
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