Rails 2.3.2试图渲染ERB而不是HAML

Rails突然试图渲染ERB而不是Haml,我无法弄清楚原因。 我创建了新的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 

Annnd运行服务器…我导航到localhost:3000 \ users我收到此错误消息:

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

出于某种原因,Rails正在尝试查找和呈现.erb文件而不是.haml文件。 vendor \ plugins \ haml \ init.rb存在,未触及。

我已经多次重新安装了Haml(Pretty Penny)并且仍然得到了相同的结果。 我也尝试将config.gem’haml’添加到我的environment.rb中,但这也行不通。

我无法弄清楚为什么突然rails不能为我渲染haml。

嗨,似乎haml没有启用Rails插件,为了使它能够使用以下命令。

从命令提示符转到您的应用程序文件夹,键入以下内容

  $ cd .. $ haml --rails  

如果这不起作用尝试使用以下代码安装haml gem

 $ gem install haml 

我试过上面的例子,它确实对我有用,我在我的ubuntu系统中安装了haml gem。

祝好运 !

注意:在HAML 3.1中不推荐使用“haml –rails”

值得注意的是,错误消息表明找不到index.erb这一事实并不意味着它也没有找到index.haml。 erb扩展名被硬编码到错误消息中。

我认为我有同样的问题你描述,但事实certificate我的应用程序根本找不到我的部分 – 它与文件扩展名无关。

我在Rails 2.3.4中遇到了同样的问题(参见本文)。 多个gem卸载/ gem安装rails无法解决问题。 但降级到Rails 2.3.2有效! (我知道HAML以前在这个版本的Rails中使用过这个项目)。

 sudo gem install -v 2.3.2 rails 

使用Rails 3.1,我遇到了同样的错误,不得不重新启动Web服务器。

我在rails 2.3.18中有这个旧项目,其中使用bundler管理gem,我所要做的就是明确使用版本3.1.3它不适用于最新版本(4.0)。 所以在我的版本中我添加了

 gem 'haml', '3.1.3' 

捆绑安装并重新启动我的开发服务器:)

嗯奇怪,这可能是相关的。

根据: http : //www.ruby-forum.com/topic/101346,您应该在控制器中使用resource_url帮助程序,在视图中使用resource_path帮助程序。 对?

但是,如果我在我的控制器内的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中

也许你的文件名错了,如果你在index.html.haml_的末尾有一个空格,rails会出错…

我遇到了同样的问题,在我的rails应用程序识别出更改之前,我必须在安装Haml之后重新启动服务器。

我遇到过Ruby 1.9x,Rails 2.3.5和HAML 3.1这个问题。 我认为问题的一部分是1.8中删除了1.8中的一些已弃用的调用。

恕我直言,如果你想在Rails 2中使用HAML,你最好降级到Ruby 1.8。 (这是我为解决问题所做的工作)。 在Rails 2中,你的配置中必须有gem.config“haml”。

更好的是,在Ruby 1.9上前进到Rails 3!

我有同样的问题。

该解决方案记录在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| 配置块!!

更新 – 不再实际:

我仅将所有haml文件命名为.haml

为了显示:

 test.haml # not test.html.haml 

5年后更新:

我建议将它们命名为“file.format.haml”,因为它更清楚哪种格式是结果……