Renderizar um HTML parcial dentro de uma solicitação JSON

Observe que isso também funciona para renderizar qualquer visualização (parcial ou não) de qualquer formato em uma solicitação de qualquer formato.

Primeiro, adicione o seguinte método em um auxiliar ( application_helper.rbpor exemplo):

# execute a block with a different format (ex: an html partial while in an ajax request)
def with_format(format, &block)
old_formats
= formats
self.formats = [format]
block
.call
self.formats = old_formats
nil
end

Então, sempre que você tiver uma solicitação JSON, faça isso no método:

def controller_action
with_format
:html do
@html_content = render_to_string :partial => 'path/to/view', :locals => { /* any locals needed in the view */ }
end
render
:json => { :html_content => @html_content }
end