Respond With JSON Regardless Of Content Type
rails
Written September 01, 2022
Let's say you want to serve some JSON from an endpoint (for example, you might
be serving the apple-app-site-association file for iOS Universal
Links).
Regardless of whether the endpoint is requested as JSON (application/json),
HTML (text/html), or something else (plain/text), you want to respond with
JSON.
The format#any
method
can be used when defining the respond_to block. This tells the controller
that any mimetype is accepted.
def show
respond_to do |format|
format.any do
render params[:page],
formats: 'json',
content_type: "application/json",
layout: false
end
end
end
The other important element in this is formats: 'json' which helps Rails find
your <template_name>.json.erb file in the views directory.
Though I cannot find any documentation for it, format.all appears to work the
same as format.any as described in the above example.
h/t Dillon Hafer