Equivalent of "redirect_to :back" in json response

Hi,

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
returns.

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
else
format.html { redirect_to :back }
format.json { render json: @my_controller.errors, status:
:unprocessable_entity }
end
end
end

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

end

I hope my intent is clear…

Thanks!

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs