Is this behavior important? First of all, I'm not sure this is the right
behavior, since it's possible to be explicit about the format you wish
to use and rendering a template from a different MIME seems likely to be
a mistake. Second of all, it requires us to widen our search criteria
when looking for subsidiary templates (like partials), and prevents us
from efficiently caching the template for a given format (instead, we
need to cache the template for a given Array of formats, which is much
less efficient).
I also think that restricting subsidiary templates would be consistent
with other (non-breaking) fixes we've done to ensure that layouts match
the MIME type of the template they are wrapping (which allowed us to
eliminate the exempt_from_layout hacks).
Thanks for your attention,
-- Yehuda
I'm guessing that the historical basis for this behaviour is:
xml.content render :partial=>"post", :object=>post
So long as we support :format=>:html in that call, I think the change
is worth making in 3.0. I'd also suggest that the exception gave a
useful message like:
Template not found: post.xml, found post.html. If that's what you
wanted use render ... :format=>:html
--
Cheers
Koz
I'd also assume the behavior might be left over from the early days of
bare .erb templates - there are still a few of those in the test
suite, and I remember it was a headache when sorting out the 'JS
responses get wrapped in HTML layouts' mess.
--Matt Jones
In Rails 2.x, if you have an XML template, and try to render a template
that does not have an XML version, but does have an HTML version, ...
Hey, Yes, it should assume a file of the same type, and raise if there isn't. i.e. index.html.erb renders 'example' , should find example.html.erb or raise Same with xml: index.xml.erb renders 'example' , should find example.xml.erb or raise But overwrites should be allowed: index.html.erb renders 'example.xml.erb' , should work