3

Rails が突然 Haml ではなく ERB をレンダリングしようとしているのですが、その理由がわかりません。新しい Rails プロジェクトを作成し、Haml を再インストールし、Rails を再インストールしました。

アプリケーションを作成するときに実行する手順は次のとおりです(Rails 2.3.2):

  rails> rails test
  rails> cd test
  rails\test> haml --rails .
  rails\test> ruby script\generate model user email:string password:string
  rails\test> ruby script\generate controller users index
  rails\test> rake db:migrate

UsersController は次のようになります。

class UsersController < ApplicationController
  def index
    @users = User.all
  end
end

私のルート:

ActionController::Routing::Routes.draw do |map|
  map.resources :users
end

ここでviews\users\index.html.hamlを作成します:

%table
  %th(style="text-align: left;")
    %h1 Users
  - for user in @users
    %tr
      %td= user.email
      %td= user.password

サーバーを実行します... localhost:3000\usersに移動すると、次のエラー メッセージが表示されます。

Template is missing

Missing template users/index.erb in view path app/views

何らかの理由で、Rails は .haml ファイルではなく .erb ファイルを見つけてレンダリングしようとしています。 vendor\plugins\haml\init.rbがそのまま存在します。

Haml (Pretty Penny) を複数回再インストールしましたが、同じ結果が得られます。config.gem 'haml' を environment.rb に追加しようとしましたが、これも機能しません。

Railsが突然hamlをレンダリングしない理由がわかりません。

4

11 に答える 11

7

こんにちは、haml が Rails プラグインとして有効になっていないようです。有効にするには、次のコマンドを使用します。

コマンド プロンプトからアプリケーション フォルダーに移動し、次のように入力します。

  $ cd ..
  $ haml --rails <yourproject>

これが機能しない場合は、次のコードで haml gem をインストールしてみてください

$ gem install haml

上記の例で試してみましたが、うまくいきました。ubuntuシステムにhaml gemがインストールされています。

幸運を !

注: 「haml --rails」は HAML 3.1 で非推奨になりました

于 2009-07-20T11:40:31.020 に答える
3

エラーメッセージにindex.erbが見つからなかったと表示されているからといって、index.hamlも検索されなかったわけではないことに注意してください。erb拡張子は、エラーメッセージにハードコードされています。

私はあなたが説明したのと同じ問題を抱えていると思いましたが、私のアプリケーションは私の部分をまったく見つけることができなかったことがわかりました-それはファイル拡張子とは何の関係もありませんでした。

于 2010-04-14T11:41:05.137 に答える
2

Rails 2.3.4でも同じ問題が発生しました (この投稿を参照)。複数の gem アンインストール/gem インストール レールでは、問題は解決しませんでした。しかし、Rails 2.3.2 へのダウングレードはうまくいきました! (私は、HAML がこのバージョンの Rails でこのプロジェクトで以前に働いていたことを知っています)。

sudo gem install -v 2.3.2 rails
于 2009-09-15T01:43:47.467 に答える
1

私はこの古いプロジェクトを Rails 2.3.18 に持っており、gem はバンドラーを使用して管理されています。バージョン 3.1.3 を明示的に使用するだけで済みました。最新バージョン (4.0) では機能しませんでした。だから私のバージョンでは追加しました

gem 'haml', '3.1.3'

バンドルをインストールして、開発サーバーを再起動しました:)

于 2014-12-09T11:55:06.747 に答える
1

Rails 3.1 を使用すると、同じエラーが発生し、Web サーバーを再起動する必要がありました。

于 2012-01-31T04:31:04.907 に答える
0

私はこれと同じ問題を抱えていました。

解決策はhttps://github.com/haml/haml/issues/672に記載されています

追加する必要があります

config.after_initialize do 
  require 'haml'
  Haml.init_rails(binding)
end

構成ブロック内の config/environment.rb 内Rails::Initializer.run do |config|!!

于 2013-04-28T14:03:55.837 に答える
0

index.html.haml_ の最後に空白がある場合、ファイル名が間違っている可能性があります。レールは間違っています...

于 2009-08-27T12:41:53.587 に答える
0

更新 - もう実際のものではありません:

すべての haml ファイルに .haml のみという名前を付けます

説明する:

test.haml
# not
test.html.haml

5年後の更新:

どの形式が結果であるかがより明確になるため、「file.format.haml」という名前を付けることをお勧めします...

于 2009-09-03T09:42:38.937 に答える
0

うーん、奇妙な、これは関連している可能性があります。

http://www.ruby-forum.com/topic/101346によると、コントローラーではresource_urlヘルパーを使用し、ビューではresource_pathヘルパーを使用する必要があります。右?

しかし、 controller内のredirect_to呼び出しでresource_urlヘルパーを使用すると、次のようになります。

ビュー パス app/views にテンプレート htp://localhost:4000/categories/new.erb がありません

代わりにresource_pathヘルパーを使用しても、まったく問題はありません。誰が何が間違っているのか知っていますか?

resource_urlヘルパーが .erb ファイルにリダイレクトしようとするのはなぜですか?

これは、サーバー ログからのエラーです。

ActionView::MissingTemplate (Missing template http://localhost:4000/categories/new.erb in view path app/views):
haml (2.2.2) lib/haml/helpers/action_view_mods.rb:13:in `render'
app/controllers/categories_controller.rb:15:in `create'
haml (2.2.2) rails/./lib/sass/plugin/rails.rb:19:in `process'

PSこれはRails 2.3.3にあります

于 2009-08-01T22:48:04.093 に答える
0

同じ問題に遭遇し、Haml をインストールした後、レール アプリが変更を認識する前にサーバーを再起動する必要がありました。

于 2009-09-05T04:56:29.110 に答える
0

Ruby 1.9x、Rails 2.3.5、および HAML 3.1 でこの問題が発生していました。問題の一部は、1.8 で廃止された呼び出しの一部が 1.9 で削除されたことだと思います。

Rails 2 で HAML を使用する場合は、Ruby 1.8 にダウングレードすることをお勧めします。(これは私の問題を解決するために私がしたことです)。Rails 2 では、config に gem.config の「haml」が必要です。

さらに良いことに、Ruby 1.9 で Rails 3 に進みましょう!

于 2011-06-07T15:08:47.057 に答える