Forum: Ruby on Rails format.atom renders builder templates inside HTML application layout in 2.3.0

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.
Wincent C. (Guest)
on 2009-02-15 10:20
(Received via mailing list)
Given a builder template at "app/views/posts/index.atom.builder", in
2.2.2 my controller methods could render atom feeds like this:

  format.atom { @posts = Post.find(:all) }

As of 2.3.0 RC1, that code produces unusable feeds because they get
rendered _inside_ the application layout (HTML). So I now need to
render like this:

  format.atom {
    @posts = Post.find(:all)
    render :layout => false
  }

Is this a bug/regression in 2.3.0 RC1? Or was I just lucky in the past
because the old behaviour was not intended?

And if the new behaviour _is_ intended, is there a way I can set a
default layout (false) for the atom format in one single place,
instead of having to do it explicitly in every action of every
controller?

Cheers,
Wincent
Wincent C. (Guest)
on 2009-02-16 13:09
(Received via mailing list)
On Feb 15, 9:19 am, Wincent C. <removed_email_address@domain.invalid> wrote:
>
> And if the new behaviour _is_ intended, is there a way I can set a
> default layout (false) for the atom format in one single place,
> instead of having to do it explicitly in every action of every
> controller?

The workaround I'm currently testing is sticking this in my
application_controller.rb:

  layout Proc.new { |controller| controller.send(:is_atom?) ? false :
'application' }

Where "is_atom?" is just this method:

  def is_atom?
    params[:format] == 'atom'
  end

Still wondering though, why this used to work pre-2.3.0 and what/why
it has has changed all of a sudden...

> Is this a bug/regression in 2.3.0 RC1? Or was I just lucky in the past
> because the old behaviour was not intended?

Cheers,
Wincent
This topic is locked and can not be replied to.