Thanks, Jonathan.  First off, I inherited this code base and I realize
that there is a better solution... specifically to do a request with
update.  The request ask for json because they return both data
elements which are used in the page and an html block as a replacement
for a section.  If there were only one call... I would just fix it by
hand, but this approach has been used in multiple places in the code
base.  They make a call that constructs a json object, and one element
in it is a string of html to replace a div.  Unfortunately, when we
call render_string -- now the render wont look for .html.erb objects.
I've tried adding :content_type=:html to the render call, to no
avail.  I've also tried adding Mime::HTML and 'text/html'
as :content_type parameters.

I think I just need to temporarily override the request content type
during rendering, but I can't figure out how.

Russell

On May 30, 11:16 am, Jonathan Rochkind <rails-mailing-l...@andreas-
s.net> wrote:
> RFine wrote:
>
> > render :partial => 'comments/partial_name'
>
> > If I change it to :
>
> > render :partial => 'comments/partial_name.html.erb'
>
> > and it works. It appears as though the fact that the call is a JSON
> > request from the client is causing the render engine not to search
> > for .html and .html.erb in the path, thus they fail.
>
> You got it. Why are you returning .html from a ajax/json request from
> the client, anyway?  Generally, ajax requests from the client get back
> javascript (or specifically json), not html!
>
> Rails is trying to help you with this general case, because you can have
> the same action that will return partial.html.erb if it's an html
> request, or partial.js.erb if it's an AJAX request.  I forget exactly
> how Rails determines when the format is js, but I know if you're using
> any of the Rails helper methods for ajax callbacks, they definitely
> include a query param to tell Rails what's what.
>
> So you can change the render call like you say. Or you COULD rename the
> partial in the old way partial_name.erb, so Rails will use it for any
> format request. But that's kind of weird (and now i'm not entirely sure
> it'll work).  Or you could reconsider why you want to return HTML
> (rather than js/json) to a js request in the first place. Or you could
> take a look at respond_to to see how you can return different views for
> different request 
> types.http://api.rubyonrails.org/classes/ActionController/MimeResponds/Inst...
>
> --
> Posted viahttp://www.ruby-forum.com/.
--~--~---------~--~----~------------~-------~--~----~
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