質問

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
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top