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”,因为它更清楚哪种格式是结果……