升级到Rails 3.1后出现的ActionView::MissingTemplate错误

7

在升级到Rails 3.1.0并遵循David Rice的指导后,所有控制器都无法找到它们的视图。

# rails s #

Started GET "/units" for 127.0.0.1 at 2011-09-04 07:52:23 -0400
  Unit Load (0.1ms)  SELECT "units".* FROM "units" 

ActionView::MissingTemplate (Missing template units/index, application/index with {:handlers=>[:erb, :builder], :formats=>[:html], :locale=>[:en, :en]}. Searched in:
):
  app/controllers/units_controller.rb:9:in `index'

units_controller.rb:

  # GET /units
  # GET /units.xml
  def index
    @units = Unit.all

    respond_to do |format|
      format.html # index.html.erb
      format.xml  { render :xml => @units }
    end
  end

当然,视图是存在的 (/app/views/units/index.html.erb; 在升级之前它是正常工作的)。我觉得这是一个愚蠢的错误,我在这里错过了什么?


我在本地主机上没有遇到这个错误,但在Heroku上却不知道为什么出现了。有其他人看到过这个问题吗? - Olivier Lacan
7个回答

4

看起来您忘记在development.rb文件中删除以下行:

config.action_view.debug_rjs = true

当不使用Rail Javascript时,应将其删除或注释掉。

有关升级信息,请参见rubyonrails.org上的“jQuery:新默认值”。 http://weblog.rubyonrails.org/2011/4/21/jquery-new-default


2

就像Tom所说,我最初忘记移除了

config.action_view.debug_rjs = true

在文件/config/environments/development.rb中,但在我发布问题时,我已经完成了它。然而,有一件事情(非常愚蠢),就是我必须在更改配置参数后重新启动服务器。当您更改配置设置时,请重启服务器!

0

如果你正在升级一个自Rails v1以来一直存在的旧应用程序,你可能会有以.rxml命名的xml模板。在Rails 3.1中不再支持这种方式(在3.0中支持),因此它们需要重命名为.builder。

原来是:

units.xml.rxml

需要重命名为:

units.xml.builder

这将影响所有使用 XML 构建器的模板,例如 RSS、KML 等。


0

视图保存为erb,而不是haml?只是瞎猜...


0

使用rails generate controller Welcome index命令可以生成控制器,我想这是生成控制器最简单的方法了。


0
我看到这个问题是因为我的一些模板仍然被命名为.rhtml而不是.erb.html

0
我遇到了同样的错误,但原因不同。当我运行我的cucumber测试时,我的RAILS_ENV设置为开发环境。 export RAILS_ENV=export RAILS_ENV=test 解决了这个问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接