This works perfectly fine in rails 2.1.2 and stopped working after upgrading to 2.2.2.
It appears that :layout => true is not taking any effect. The @some_var.to_xml is rendered just not with
application.xl.builder any more. I googled around and tried a bunch of different approaches but
stuck. Anyone seen something like this?
Yes I have. I wrote a tiny app to illustrate my problem.
I have one model - user.rb:
class User < ActiveRecord::Base
def name
"foo"
end
end
and users_controller.rb:
class UsersController < ApplicationController
def index
respond_to do |format|
format.html
format.xml do
render :xml => User.new, :layout => 'application'
end
end
end
end
I defined routes for it: map.resources :users
Then I change this to vary rails' versions for testing:
RAILS_GEM_VERSION = '2.2.2' unless defined? RAILS_GEM_VERSION
Processing UsersController#index to xml (for 127.0.0.1 at 2009-03-16
17:41:10) [GET]
[4;36;1mSQL (0.3ms) [0;1mSET SQL_AUTO_IS_NULL=0
[4;35;1mUser Columns (1.5ms) SHOW FIELDS FROM `users`
Rendering template within layouts/application
Completed in 34ms (View: 6, DB: 2) | 200 OK [http://localhost/
users.xml]
As you can see, it is renderin layouts/application.
I have defined views/layouts/application.xml.builder as such:
xml.instruct!