Hi,

Yesterday, I upgraded from 3.0.3 to 3.0.10.  I've encountered a
problem with rendering XML.  Here's the situation.

The app is primarily a non-RESTful API app.  Controller actions should
respond to requests with an XML response without the need to have
an .xml at the end of the route request.   For my controller actions I
have written a builder (action_name.xml.builder) template and a
builder layout (all_responses.xml.builder).  For all the actions in
the controller, I set the default layout to "all_responses" using the
controller layout class method.

Under this scenario, Rails performed as expected in version 3.0.3.
I could write the following and the correct XML with layout was
produced.

def action_name
   @animal = Animal.new
   render :content_type => "application/xml" and return
end

Rails would find the builder template under the controllers view
directory as expected.  It would work as well with the following:

respond_to do |format|
   format.xml{render :status => 200}
end

After upgrading to rails 3.0.10.  Rendering is no longer working as
expected.   Instead, I get the following error:

 Missing template action_name with
{:locale=>[:eng, :eng], :formats=>[:html], :handlers=>[:rjs, :rhtml, :erb, 
:rxml, :builder]}
in view paths "/Users/me/src/app_name/app/
views" (ActionView::MissingTemplate)

In other words, Rails 3.0.10 no longer can find the template.  It
instead appears to always be searching for the html template which
doesn't exist.

As a partial fix, I have to specify literally everything.  For
example....

def action_name
    render :template => "controller_name/
action_name.xml.builder", :status => 200, :layout =>
'all_response.xml.builder' and return
end

But it only partially fixes the problem.   If I go into the debugger,
when I'm in this action, and I execute manually the render line
above.  I receive the correct XML response with the XML from the
all_response.xml.builder layout.   However, the actual response that
Rails 3.0.10 delivers strips XML produced by the builder layout and
actually wraps my action_name.xml.builder XML with a HTML doc type and
the html tags such as html and body.

In other words, despite the fact that I specify manually all the views
and layout, it insists on producing HTML.

I'm at a lose about what's going on here.  I search the Rails change
logs and couldn't find anything that seems to affect the way rendering
works.

If anyone could provide help or advice, I would greatly appreciate it.

Chad








-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To unsubscribe from this group, send email to 
rubyonrails-talk+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en.

Reply via email to