线路2.3.2试图渲染ERB而不是HAML(Rails 2.3.2 trying to render

2019-07-30 11:22发布

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。

Answer 1:

你好它看起来像HAML不为Rails插件启用,以便使其能够使用下面的命令。

转到在命令提示符下,键入您的应用程序文件夹下面

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

如果不列入工作尝试安装HAML宝石用下面的代码

$ gem install haml

我试着用上面的例子,它的工作对我来说,我已经安装在我的Ubuntu系统HAML宝石。

祝好运 !

注: “HAML --rails” 在HAML 3.1已被否决



Answer 2:

值得一提的是,该错误消息说,它无法找到index.erb并不意味着它没有考虑到index.haml过的事实。 该ERB扩展硬编码到该错误消息。

我以为我有你描述了同样的问题,但事实证明,我的应用程序根本找不到我的部分在所有 - 它有无关的文件扩展名。



Answer 3:

我有同样的问题(见本岗位 )使用Rails 2.3.4。 多宝石卸载/创业板安装导轨并没有解决问题。 但降级到2.3.2的Rails工作! (我知道HAML以前在参与这个项目与此版本的Rails)。

sudo gem install -v 2.3.2 rails


Answer 4:

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



Answer 5:

我在轨2.3.18,其中的宝石使用捆绑管理这个古老的项目,而我所要做的就是明确地使用最新版本3.1.3它并没有使用最新的版本(4.0)工作。 所以在我的版本我添加

gem 'haml', '3.1.3'

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



Answer 6:

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

据: 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



Answer 7:

也许你的文件名是错误的,如果你有在index.html.haml_结束一个空格,Rails会错了...



Answer 8:

我遇到了同样的问题,我不得不安装Haml的在我的Rails应用程序确认的更改后重新启动我的服务器。



Answer 9:

我在使用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的!



Answer 10:

我有同样的问题。

该解决方案中介绍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| 配置块!!



Answer 11:

更新了 - 不是实际的了:

我的名字我所有的HAML文件的唯一.haml

为了显示:

test.haml
# not
test.html.haml

更新5年以后:

我建议命名为“file.format.haml”,因为它更清楚哪种格式的结局...



文章来源: Rails 2.3.2 trying to render ERB instead of HAML