Rails的突然试图渲染ERB而不是Haml的,我想不通为什么。 我已经创造了新的轨道项目,重新安装Haml的,并重新安装导轨。
这也正是让我的应用程序(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
我现在创建视图\用户\ index.html.haml:
%table
%th(style="text-align: left;")
%h1 Users
- for user in @users
%tr
%td= user.email
%td= user.password
Annnd运行服务器...我浏览到本地主机:3000 \用户 ,我得到这个错误信息:
Template is missing
Missing template users/index.erb in view path app/views
出于某种原因,Rails正在试图寻找和呈现.erb文件,而不是.haml文件。 供应商\插件\ HAML \ init.rb存在的,不变的。
我已经重新安装Haml的(一大笔钱)多次,仍然得到同样的结果。 我也尝试添加config.gem“HAML”我的environment.rb但这也不起作用。
我想不通为什么会突然轨对我来说不会渲染HAML。
你好它看起来像HAML不为Rails插件启用,以便使其能够使用下面的命令。
转到在命令提示符下,键入您的应用程序文件夹下面
$ cd ..
$ haml --rails <yourproject>
如果不列入工作尝试安装HAML宝石用下面的代码
$ gem install haml
我试着用上面的例子,它的工作对我来说,我已经安装在我的Ubuntu系统HAML宝石。
祝好运 !
注: “HAML --rails” 在HAML 3.1已被否决
值得一提的是,该错误消息说,它无法找到index.erb并不意味着它没有考虑到index.haml过的事实。 该ERB扩展硬编码到该错误消息。
我以为我有你描述了同样的问题,但事实证明,我的应用程序根本找不到我的部分在所有 - 它有无关的文件扩展名。
我有同样的问题(见本岗位 )使用Rails 2.3.4。 多宝石卸载/创业板安装导轨并没有解决问题。 但降级到2.3.2的Rails工作! (我知道HAML以前在参与这个项目与此版本的Rails)。
sudo gem install -v 2.3.2 rails
使用Rails 3.1,我跑了相同的错误,不得不重新启动Web服务器。
我在轨2.3.18,其中的宝石使用捆绑管理这个古老的项目,而我所要做的就是明确地使用最新版本3.1.3它并没有使用最新的版本(4.0)工作。 所以在我的版本我添加
gem 'haml', '3.1.3'
没有捆绑安装,并重新启动我的开发服务器:)
嗯奇怪,这可能是相关的。
据: http://www.ruby-forum.com/topic/101346你应该在视图控制器和resource_path助手使用resource_url帮手。 对?
但是,如果我做我的控制器内的redirect_to的呼叫使用resource_url帮手,然后我得到:
缺少模板HTP://本地主机:4000 /类别/鉴于路径应用/视图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会错了...
我遇到了同样的问题,我不得不安装Haml的在我的Rails应用程序确认的更改后重新启动我的服务器。
我在使用Ruby 1.9倍这个问题来说,Rails 2.3.5和3.1 HAML。 我认为问题的一部分是,一些在1.8弃用的电话是在1.9去除。
恕我直言,如果你想在梁2使用HAML,你会更好降级到Ruby 1.8。 (这是我做过什么来解决我的问题)。 在Rails 2,你必须在你配置的gem.config“HAML”。
更妙的是,前进到Rails 3 Ruby 1.9的!
我有同样的问题。
该解决方案中介绍https://github.com/haml/haml/issues/672
您需要添加
config.after_initialize do
require 'haml'
Haml.init_rails(binding)
end
你的配置内/内environment.rb中Rails::Initializer.run do |config|
配置块!!
更新了 - 不是实际的了:
我的名字我所有的HAML文件的唯一.haml
为了显示:
test.haml
# not
test.html.haml
更新5年以后:
我建议命名为“file.format.haml”,因为它更清楚哪种格式的结局...