Forum: Ruby on Rails render layout not working for application.xml.builder

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Bc1eb24764e123c9dac1c9dcf66c7fda?d=identicon&s=25 Zhao Lu (zlu)
on 2009-03-03 23:06
(Received via mailing list)
I have layouts/application.xml.builder which is rendered for all xml
reponses.
In controllers I have:

format.xml { render :layout => true, :xml => @some_var }

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?

Thanks,

--
Zhao
Fdb488647484e40f785dde7134afc6d1?d=identicon&s=25 Heinz Strunk (cojones)
on 2009-03-04 13:30
Haven't seen something like this but have you tried :layout =>
'application'?
Bc1eb24764e123c9dac1c9dcf66c7fda?d=identicon&s=25 Zhao Lu (zlu)
on 2009-03-17 02:10
(Received via mailing list)
Heinz,

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

Using :layout => 'application' or not doesn't matter.  When I hit
http://localhost:3000/users.xml
I get this output:

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!

xml.response do
    xml << yield
end

And what I get is:
-
<user>
<created-at type="datetime" nil="true"/>
<updated-at type="datetime" nil="true"/>
</user>

What I expect to get is xml instruct on top,
then a response node, with user inside.

Any more insight will be greatly appreciated.

Zhao


On Mar 4, 5:30 am, Heinz Strunk <rails-mailing-l...@andreas-s.net>
This topic is locked and can not be replied to.