I have a standard controller which is set up to respond to HTML, JS and JSON requests:
def picture
@picture = Picture.new params[:picture]
respond_to do |format|
if @picture.save
format.html do
logger.debug "In the HTML responder"
redirect_to @picture
end
format.json { render json: @picture, status: :created, location: @picture }
format.js { render :nothing => true }
else
# you get the idea
end
end
end
Now I’m trying to send a request to that controller with the $.ajax function (I can’t use :remote => true in this specific situation – I’m trying to make ajax file upload work).
$.ajax({
url: $("form#new_picture").attr("action"),
type: "POST",
data: formdata,
processData: false,
contentType: false
});
The problem is that my request is being treated as a HTML request for some reason. How do I tell rails that I want a JS response?
By the way, I’m using jquery_ujs in my project so I have access to the methods it provides if necessary. I’m not really good enough at JS to tweak that to do what I need here.
This solution didn’t work for me (rails 3.1 + coffeescript). After searching quite a lot, I found the good way to do it and I wanted to share:
Just add “.js” to the end of the url. So simple… 😉