开发者

ActionView::MissingTemplate after Rails 3.1 upgrade

After upgrading to Rails 3.1.0 and following David Rice's instructions, all of my controllers strangely can't find their views anymore.

# rails s #

Starte开发者_StackOverflowd 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

Of course, the view is there (/app/views/units/index.html.erb; it was working before the upgrade). I feel this is a stupid error, what am I missing here?


It looks like you forgot to remove the following line in your development.rb:

config.action_view.debug_rjs = true

This should be removed or commented out when not using Rail Javascript.

See the "jQuery: New Default" on rubyonrails.org for more information on upgrading http://weblog.rubyonrails.org/2011/4/21/jquery-new-default


Like Tom said, I had originally forgotten to remove

config.action_view.debug_rjs = true

in /config/environments/development.rb, but at the time I posted the question, I had done it already.

The thing though (quite stupid) is that I had to restart the server after changing a config parameter. Restart your servers when you change your config settings, kids!


The views are saved as erb, not haml? Just stabbing in the dark...


I got the same error, but for a different reason. I had my RAILS_ENV set to development when I ran my cucumber tests.

export RAILS_ENV= or export RAILS_ENV=test fixed the problem.


rails generate controller Welcome index will generate the controller , I guess this is the easiest way to generate the controller


If you're upgrading an old app that's been around since Rails v1, you might have xml templates named as .rxml. This is no longer supported in Rails 3.1(where it was in 3.0), so they need to be renamed to .builder.

What was:

units.xml.rxml

Needs to be renamed to:

units.xml.builder

This would affect all templates that uses the XML builder. e.g. RSS, KML etc.


I saw this problem because some of my templates were still named .rhtml instead of .erb.html

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜