dijiri dijiri - 5 months ago 6
Ajax Question

ajax call redirect to page

In my server terminal I saw Started GET "/another" but the browser dont redirect to the url. What is wrong in this code?

Routes:

match '/example_url', to: 'controllerx#sup', via: 'get'


Client side:

$.ajax({
type: "GET",// GET in place of POST
contentType: "application/json; charset=utf-8",
url: "/example_url",
data : {example: 'hey'},
success: function(result) {
//TODO
},
error: errorFunction
});


Controller:

def sup
respond_to do |format|
format.js { redirect_to another_path }
end
end

Answer

You not able to redirect from the controller action because action called remotely. Try this:

Client:

$.ajax({
  type: "GET",// GET in place of POST
  dataType: "json",
  url: "/example_url",
  headers: {
      'Content-Type': 'application/json'
  },
  data : {example: 'hey'},
  success: function(result) {
    window.location = result.location;
  },
  error: errorFunction
});

Controller:

def sup
  respond_to do |format|
    format.json { render json: { location: another_path } }
   end
end