I have a controller which respond_to format.js, however, most request assume the old format.html still exists and throws a 404 exception. How do I capture all MIME request on the controller and redirect them only to format.js?
Here's the current controller action
def search
respond_to do |format|
unless @search.nil?
format.js { render :partial => '/search/search_form', :status => 200 }
else
format.js { render :partial => '/search/not_exist', :status => 500 }
end
end
end
I'm trying to do something like this, (I know this is invalid, just for demonstration).
def search
respond_to(:html) do |format|
unless @search.nil?
format.js { render :partial => '/search/search_form', :status => 200 }
else
format.js { render :partial => '/search/not_exist', :status => 500 }
end
end
end
You can plug in a permanent redirect to your format.html and loop it back to the controller using the format you want. This is the way that you would redirect, say, an RSS feed to an atom feed or something where you may have multiple input formats, but only one output format
Replacing path_back_here with whatever path you are using ( search_path? )
If all requests should only be js, just take out the whole respond_to structure:
(note: change to 422 unprocessable entity to indicate a semantic problem with the submission. 500 is usually reserved for server errors, as in, crashes, stack dumps, etc)