Equivalent of "redirect_to :back" in json response


I’ve got an ajax call who’s response does some complicated things on
the view. I’ve already created this view in ruby on the server, so I’d
rather not rewrite the entire thing in javascript when the ajax call

It seems like it should be easy enough to resend the current view
(minus the layout) in response to the json call, but I’m having
trouble figuring out what should go in the controller.

In other words, here’s the standard controller action:

POST /my_controller

POST /my_controller.json

def create
@my_controller = MyController.new(params[:my_controller])

respond_to do |format|
  if @my_controller.save
    format.html { redirect_to :back }
    format.json { render json: @my_controller, status: :created,

location: @my_controller } # <— here
format.html { redirect_to :back }
format.json { render json: @my_controller.errors, status:
:unprocessable_entity }

At the place I’ve marked “<— here”, I’d like to basically return
what would happen on “redirect :back” except I don’t want the round
trip to the browser, nor the layout, and I’d like to return it as part
of the json object.

In other words, I’m looking for something like this:

format.json { render json: { html:
get_html(request.env[‘REQUEST_URI’]) }, status: :created, location:
@my_controller } # <— here

def get_html(uri)

TODO: How do I render this and return it as a string?

Obviously not the following, but that is the idea:

html = render :template => uri, :layout => false

return html


I hope my intent is clear…