Esto debería funcionar:
def upload
render :json => { :attachmentPartial => render_to_string('messages/_attachment', :layout => false, :locals => { :message => @message }) }
end
Aviso del render_to_string y el subrayado _
antes de que el nombre del parcial (porque render_to_string no espera un parcial, de ahí el : layout => false también).
ACTUALIZACIÓN
Si desea procesar html
dentro de una petición json
por ejemplo, le sugiero que añadir algo como esto en application_helper.rb
:
# 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
A continuación, puede simplemente hacer esto en su método:
def upload
with_format :html do
@html_content = render_to_string partial: 'messages/_attachment', :locals => { :message => @message }
end
render :json => { :attachmentPartial => @html_content }
end
Sí, debería ser capaz de lograr esto. Creo que tu sintaxis es incorrecta. Pago y envío: http://stackoverflow.com/questions/2088280/in-rails-how-do-you-render-json-using-a-view para una versión funcional. – raidfive
la pregunta es diferente :), parcial en json, no json en parcial –
buena captura :) supongo que nunca lo he intentado de esa manera – raidfive